几个月前,我从 VPS 切换到专用服务器,但是这段时间我都没有时间真正地再次检查我可能需要的所有文件、复制它们并关闭 VPS。
如何在不关闭 VPS 的情况下以最少的努力复制整个文件系统(除了可能不需要的系统文件),最好直接复制到另一台在线机器(专用服务器)?
我通过 SSH 拥有两台机器的 root 访问权限,但无法访问物理硬盘。
答案1
文件系统本身很可能无法在线复制,因为它一直在变化。
不过,您可以非常轻松地复制文件,并在文件系统中保留每个文件的所有内容。rsync
从您的专用服务器尝试:
rsync -avzHXShPs --exclude sys/ --exclude dev/ --exclude proc/ root@VPS:/ /path/to/backup_folder/
,其中VPS
是您的 VPS 的 IP 地址,/path/to/backup_folder/
是您的专用服务器上的目标文件夹。
如果您的 VPS 具有不同的 SSH 端口,您可以执行以下操作:
rsync -avzHXShPs -e "ssh -p PORT" --exclude sys/ --exclude dev/ --exclude proc/ root@VPS:/ /path/to/backup_folder/
,其中PORT
是自定义端口号。
如果您想要传输自文件传输开始以来的任何已更改文件,只需再次运行相同的命令。如果文件已从 VPS 中删除,并且您希望从专用服务器上的备份中删除已删除的文件,只需将标志添加--delete
到行中即可rsync
。
解释
rsync
旗帜
-a
表示“档案”,它包含大多数设置,可以对指定文件夹(在您的情况下,/
在 VPS 上)中的所有文件进行几乎精确的复制。-v
表示“详细”。它将向您显示有关正在复制的内容的详细信息。-z
表示“压缩”,这在通过网络复制时很有用,因为网络速度通常比驱动器慢,并且您可以通过网络发送压缩数据来节省时间。-H
表示“硬链接”,如果硬链接对您很重要的话,它会保留硬链接。-X
表示“扩展属性”,保留扩展属性。这不适用于所有文件系统,但rsync
即使在复制扩展属性时出现错误,它仍会继续。-S
表示“稀疏”,这对于加快包含一堆二进制零的文件的传输非常有用。-h
表示“人类可读”,在传输过程中输出人类可读的信息。-s
表示“保护参数”,仅当源参数或目标参数的路径中有空格时才有用。
我有一个热键来输入该rsync
行,因为我经常复制数据,而且大多数时候拥有所有这些标志都很方便。
rsync
排除
--exclude sys/
排除sysfs
处的挂载/sys
。如果没有它,您可能会遇到一些奇怪的情况,例如无限递归或无限大小的文件。--exclude dev/
排除devtmpfs
位于 的挂载/dev
,这在你的专用服务器上是没有用的(甚至可能安全风险),因为两个不同的服务器上的设备完全不同。--exclude proc/
不包括proc
处的挂载/proc
。此文件夹中的系统信息仅适用于原始服务器。