我正在重写我原来的问题,因为我意识到这更有效:
我想对我的网站文件进行 tar 和 gzip,然后下载。
我知道我可以使用 tar 和 cvzf 通过一个命令来 tar 和 gzip 它。
然后我可以使用 rsync 将其下载到我的个人计算机,命令如下: rsync -av --stats[电子邮件受保护]:/远程目录路径/文件名 /本地目录路径/文件名
我可以将其合并为一个命令吗?
或者,如果有人可以建议将 Web 目录下载到本地计算机以作为一个文件进行备份的最佳方法。
答案1
您说您并不真正希望将远程服务器的目录树镜像到本地计算机上。在这种情况下,rsync
就是错误的工具。您可以tar
直接远程内容,将压缩的 tarball 传送到本地计算机:
ssh [email protected] tar -C /path/to/directory -czf - . | cat >tarball.tgz
与 不同的是rsync
,这不会在本地维护任何状态,因此如果在传输过程中连接断开,您将不得不再次传输整个存档。解决此问题的一种方法是访问tar
远程服务器上的内容,然后用于rsync
传输该内容:
ssh [email protected] 'tar -C /path/to/directory -cf - . | gzip --rsyncable >tarball.tgz'
rsync -av [email protected] tarball.tgz .
该--rsyncable
标志在压缩文件内提供重新启动标记,以便未压缩原始文件中的微小更改不会更改整个压缩结果。
答案2
您可以压缩文件期间使用该选项传输-z
,但这对您收到的文件没有影响(除了更快的传输),即它们不会“gzipped”到单个文件中。
您可以 tar 远程目录,然后 rsync 单个文件。如果您有大量小文件需要复制,这可以加快传输过程。
但 rsync 目录并随后构建 tar (作为备份文件)也是有意义的,就像您所做的那样。下次你这样做时,只需改变了文件将被传输,因此得名 rsync。