我在远程服务器上有一个目录remote1
,通过 sshfs 安装。我正在远程目录中安装一些文件的新版本,这些文件相当大(~50M)。
我目前正在使用
rsync -a --in-place local/file.so remote1/file.so~new
将文件复制到远程目录中,然后
rsync -a --in-place remote1/file.so~new remote1/file.so
。
第二个 rsync 比我想要的要慢我怀疑它是通过 ssh 下载文件数据,然后重新上传它们,而不是在远程系统上复制。
我更愿意保留该file.so~new
文件作为备份(我在新文件和原始文件之间切换),这就是我不使用mv
.
我在远程主机上没有 rsync 程序,这就是为什么我没有使用标准 rsync 命令,但我使用 rsync 来避免在文件已经就位时重新复制。
是否有命令行选项可以提高复制速度?使用 scp 或 sftp 会更好吗?如果是这样,我将如何检查文件是否未更改(时间和大小),以便在文件已经就位时我不会进行不必要的复制。
我最新的改进是上传两个新副本,然后用于mv
重命名其中一个。难道就没有更好的办法了吗?
答案1
当rsync
认为它正在访问同一主机上的源和目标时,它不会使用增量传输。相反,它只是复制整个文件。
这就是你的情况。因此,您的第二个命令是将file.so~new
ssh 保险丝链接复制到本地主机,然后立即将其复制回来。
用这个代替有什么问题吗?
mv remote1/file.so~new remote1/file.so
为了获得最快的速度,您不应该尝试运行rsync
,sshfs
而是允许它直接与远程服务器通信(通过ssh
)。然后您可以使用简单的变体:
rsync -av local/file.so remote:path/to/file.so
新文件在完全复制后才会安装,并且您的优势在于能够使用旧库作为新库的基础。