使用scp复制具有某些扩展名的文件


19

我想复制.jpg和的.png文件scp,但要复制的同一文件夹中有扩展名不同的文件。我正在执行以下操作:

scp user@someRemoteHost.com:/folder/*.{jpg,png} .

要求我输入每种扩展名的密码。有没有办法只输入一次密码?

Answers:


31

只需将其替换为:

scp user@someRemoteHost.com:'/folder/*.{jpg,png}' .

请注意一对单引号。在您的情况下,您的本地shell正在评估表达式,实际上将其转换为:

scp user@someRemoteHost.com:/folder/*.jpg user@someRemoteHost.com:/folder/*.png .

因此,要求输入两个密码。在此解决方案中,一对单引号保护它免受本地外壳程序的评估,因此,(远程)scp调用的远程外壳程序正在评估表达式。


如何包含该目录的所有子目录?
xxx ---

@ pushpen.paul如果您不需要只选择png和jpg文件,而是想要复制所有内容,则可以使用例如 scp -r user@someRemoteHost.com:'/folder' . 做到这一点。否则,如果您仍然只想在这些子目录中复制png和jpg,则可能无法使用scp或sftp(除非sftp / lftp带有可能的自定义脚本),但需要运行类似ssh +一对tar的东西。然后,您必须提出自己的具体需求。
AB

7

最好使用rsync在服务器之间进行复制操作。

 rsync -avzh user@remoteip:/path/*.jpg user@192.168.159.155:/path/*.png localserverpath

使用rsync,它将仅要求输入一次密码。

同样在rsync中,在传输文件时,它将在目标位置检查文件是否存在,并且还将检查源位置和目标位置中的内容是否相同。

如果文件也位于目标位置,并且内容也相同,则不会复制该文件。它只会复制目标位置中不存在的文件,因此减少了处理时间。

rsync通常用作增量备份工具。


8
如果使用的话无论rsync或者scp,问题是,/folder/*.{jpg,png}应该引用'/folder/*.{jpg,png}'
αғsнιη
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.