通过ssh同步本地目录

时间:2013-08-02 09:02:19

标签: unix ssh local-storage sync

以下命令对我来说对单个文件非常有用:

scp your_username@remotehost.edu:foobar.txt /some/local/directory

我想做的是递归(即服务器上给定路径的所有子目录/子文件),合并文件夹并覆盖本地已存在的文件,最后只降低服务器上小于a的文件某个值(例如10 mb)。

我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

使用rsync。

您的命令可能如下所示:

rsync -az --max-size=10m your_username@remotehost.edu:foobar.txt /some/local/directory

-a(存档模式 - 同步是递归的,传输所有权,属性,符号链接等) -z(压缩转移)

--max-size(仅复制一定大小的文件)

还有更多可能适合的旗帜。查看文档以获取更多详细信息 - http://linux.die.net/man/1/rsync

答案 1 :(得分:0)

第一个选项:使用rsync

第二个选项,它不会是一个单行,但可以用三到四行完成:

使用ssh在远程系统上创建tar存档。 使用scp从远程系统复制tar。 在本地解压缩档案。

如果存档的创建有点复杂并且涉及使用find和/或tar使用多个选项,那么创建一个可以在本地执行该操作的脚本非常实用,将其上载到服务器scp,然后使用ssh远程执行。