将文件从服务器(静态 IP)备份到家庭服务器(动态 IP)

将文件从服务器(静态 IP)备份到家庭服务器(动态 IP)

我已经熟悉并使用 rsync、scp 传输、tar、7z 等,但是它们都无法解决我打算定期进行的备份问题。

我有一台远程服务器,100GB SSD 上已使用空间为 80%,我想从该服务器备份。服务器有 10,000 多个小文件,因此基本的 tarball 或某种中间压缩(如 rsync -z)会有所帮助。

我家里有一台服务器,我想备份,但它使用动态 IP。

问题是使用rsync -z或者scp 和 tar (通过管道),它必须在远程服务器上完成,但由于它采用动态 IP,因此该服务器无法看到我的主服务器。

因此我只能在我的家庭服务器上执行命令scp 用户@远程服务器:/files/to/backup /home/user/backups但不能使用压缩,因此大量文件需要很长时间才能传输。

有没有更快的方法?

PS 我不需要存储 tarball 所需的文件权限等

编辑:由于远程服务器空间有限,我无法在那里制作 tarball 并拉到主服务器上。因此,它必须是实时的。

答案1

为什么不能使用rsync从备份目标启动?没有固有的限制rsync可以阻止这种情况。正在运行

rsync -avz [email protected]:/data /backupdir 

在备份目标(家庭服务器)上应该这样做。

答案2

有很多选择,最简单的可能就是向 SSH 添加 -C 命令,这样就可以对链接进行压缩。

一个更复杂(且更快,确保有大量小文件和延迟)的解决方案是放弃 scp 并使用管道动态压缩数据。类似 tar -cz /path/to/backup | SSH user@remote "cd /path; tar -xz" 的命令将使用 gzip 压缩来压缩和解压缩文件。当然,没有什么可以阻止您在 ssh 之后使用不同的命令,例如,如果您只想存储压缩文件,您可以使用“cat > /path/to/file.tar.gz”。

我不清楚你为什么在这里谈论动态 IP。如果这造成问题,你可以使用动态 DNS 或在静态 IP 上设置带有服务器的 VPN,或者从动态 IP 发起拉取,而不是从静态 IP 推送。

相关内容