我有一台 Linux 機器,其中有以數字命名的資料夾。如何安全地將這些資料夾的範圍複製到另一台伺服器?來源機器運行 tcsh,目標機器運行 bash。目前,從包含我要複製的資料的目錄中,我正在使用以下命令:
scp -r [2042-2046] user@target:home/user/destination_folder
來源電腦詢問我的目標密碼,並且似乎正在複製文件,但目標電腦上沒有任何內容。沒有錯誤。但是,如果我用單個資料夾名稱替換資料夾範圍,則複製工作正常:
scp -r 2042 user@target:home/user/destination_folder
然而,這意味著重複 scp 命令 5 次並每次都輸入我的密碼,這看起來效率很低,尤其是對於較大的範圍。
答案1
範圍
[2042-2046]
似乎被解釋為文件 2 和文件 6。
下面給出了所需的範圍:
204[2-6]
答案2
您可以透過 SSH 使用 tar 流:
tar cvf --include='204[2-6]' - . | ssh user@target "cd /home/destination/folder; tar xvf -"
答案3
使用bash大括號擴展表達:
scp -r {2042..2046} user@target:home/user/destination_folder
請注意,會發生大括號擴展前參數擴展,所以你不能這樣寫:
start=2042
end=2046
scp -r {$start..$end} user@target:home/user/destination_folder
沒有eval