用最少的努力复制(几乎)整个文件系统

用最少的努力复制(几乎)整个文件系统

几个月前,我从 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。此文件夹中的系统信息仅适用于原始服务器。

相关内容