在Linux上複製多個文件

在Linux上複製多個文件

我有一台 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

相關內容