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