我想复制.jpg
和.png
文件scp
,但在我复制的同一文件夹中存在具有不同扩展名的文件。我正在做以下事情:
scp [email protected]:/folder/*.{jpg,png} .
系统要求我输入每种分机类型的密码。有没有办法让我只输入一次密码?
答案1
只需将其替换为:
scp [email protected]:'/folder/*.{jpg,png}' .
请注意一对单引号。在您的情况下,您的本地 shell 正在评估表达式,将其真正转换为:
scp [email protected]:/folder/*.jpg [email protected]:/folder/*.png .
因此询问了两个密码。在此解决方案中,一对单引号保护它免受本地 shell 的计算,因此由(远程) scp 调用的远程 shell 正在计算表达式。
答案2
最好使用 rsync 在服务器之间进行复制操作。
rsync -avzh user@remoteip:/path/*.jpg [email protected]:/path/*.png localserverpath
使用 rsync 它只会要求输入一次密码。
此外,在 rsync 中,传输文件时,它会检查目标位置文件是否存在,并检查源位置和目标位置的内容是否相同。
如果目标位置也存在该文件并且内容也相同,则不会复制该文件。它只会复制目标位置中不存在的文件,因此减少了处理时间。
rsync经常被用作增量备份工具。
答案3
评论中有人询问如何从所有子目录中获取文件,AB 建议使用 ssh + tar - 只是为了为此提供一个明确的解决方案可以使用(用 zip 代替):
ssh user@ip_address 'cd /path/to/folder/; zip all_files.zip $(find . -name "*.png" -or -name "*.jpg")'; scp user@ip_address:/path/to/folder/all_files.zip .
注意:cd
这里是为了让您在解压时不会获得包含根目录的完整路径的 zip 文件