2013-08-02 108 views
0

下面的命令对我的作品很大的单个文件的本地目录:同步通过ssh

scp [email protected]:foobar.txt /some/local/directory 

我想要做的就是做递归(即所有子目录/服务器上的指定路径的子文件) ,合并文件夹并覆盖本地已存在的文件,最后只下载服务器上小于特定值(例如10 MB)的文件。

我该怎么做?

回答

1

使用rsync。

你的命令很可能是这样的:

rsync -az --max-size=10m [email protected]:foobar.txt /some/local/directory 

-a(归档模式 - 同步是递归的,所有权转移,属性,除其他事项外符号连接) -z(压缩传输)

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

还有很多可能适合的标志。检查文档的更多细节 - http://linux.die.net/man/1/rsync

0

第一个选项:使用rsync

第二个选项,并且它不会是一个衬垫,但在三条,四线来完成:

创建使用ssh在远程系统上的tar归档。 将远程系统中的tar复制到scp。 在本地解压归档。

如果归档文件的创建变得有点复杂,使用find和/或tar几个选项还是比较实用的,以创建一个脚本这将做局部,用scp上传在服务器上涉及,才把用ssh远程执行。

+0

这确实是一个不错的选择,但它没有考虑到我想摆脱大文件的事实。有任何想法吗? – user2295350

+0

要为当前目录中小于4k的文件(可以放在一个文件中,传输到远程主机并使用ssh在那里执行)tar文件:tar cf a.tar $ {find。 -type f -size -4096c}' – piokuc