在 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

相关内容