Shell-Script

使用命令獲取文件名時 SCP 不起作用

  • November 29, 2021

我正在嘗試自動化導入備份腳本。

為此,我使用此命令來獲取最後一個備份文件名:

BACKUP_NAME=$(ssh user@XX.XX.XX.XX-t "ls -w1 /mnt/prod_backup" | tail -1)

然後我用

scp -3 user@$YY.YY.YY.YY:/mnt/prod_backup/$BACKUP_NAME /home/coldstorage_import/

嘗試下載文件,以便我可以使用它來恢復本地數據庫。

但我得到這個錯誤:

: No such file or directoryackup/backup_prod_2021-11-29-03-00-01.sql

更新檔錯誤看起來不對。

什麼時候,我嘗試通過手動複製/粘貼文件名來下載文件,該命令有效。

我的猜測是某處可能有一個特殊/隱藏的字元,但我無法弄清楚..

編輯:

執行此命令嘗試查看隱藏字元時

echo $BACKUP_NAME | cat -v

我明白了

bizstore_backup_prod_2021-11-16-03-00-01.sql^M

我不確定是否^M正常。

-t從您的ssh命令中刪除並且^M不會出現在文件名中:

BACKUP_NAME="$(ssh user@XX.XX.XX.XX "ls -w1 /mnt/prod_backup" | tail -1)"

引用自:https://unix.stackexchange.com/questions/679542