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

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

我想复制.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 文件

相关内容