如何将文件夹的全部内容(递归)从一台服务器传输到另一台服务器?

J. *_*uni 1 server command-line files software-recommendation transfer

/home/jbruni在运行 Ubuntu Server 10.04 LTS (Lucid Lynx) 的 VPS 中有一个文件夹。

我即将关闭这个 VPS 并将一些东西从它移到一个新的 VPS,也运行相同的 Ubuntu 版本。

目前,我想将所有内容/home/jbruni从“旧”VPS 移到新 VPS。

1)我想保留所有文件权限和所有权设置(我不想使用任何chownchmod传输后)。[注意:新的 VPS 已经具有相同的用户/组,具有相同的 UID/GID。]

2)我想保留所有符号链接和硬链接,尽管我相信在这种情况下没有一个硬链接。我有很多符号链接,用于文件和文件夹,都指向自己/home/jbruni文件夹内的位置。

3)我真的很想保留日期和时间(mtime、atime、ctime)。[如果不可能,好吧……也没有那么糟糕。]

4)我没有足够的磁盘空间在传输之前创建一个包含“旧”VPS中所有内容的大文件(如大tarball)。无论如何,如果真的需要,我可能会获得这个临时的额外空间。

所以,我想要的是源文件夹的“镜像”。有没有办法轻松实现这一点?(或者甚至不那么容易?)

谢谢!

Oli*_*Oli 7

rsync

rsync -azv -e ssh ./localdirectory/ user@otherserver:/remote/dir
Run Code Online (Sandbox Code Playgroud)

-a是这里的坏男孩。它实际上是一个元参数,它调用-rlptgoD意味着,除其他外:

  • 递归
  • 保留符号链接
  • 保留权限
  • 保留修改时间
  • 保留组
  • 保留所有者
  • 并保留特殊的东西

它不会保留硬链接,因为硬链接是文件(它实际上是一个指向存储文件名的 inode 的指针 - 但这也是常规文件的内容 - 当您创建硬链接时,您只是为 inode 提供了一个额外的文件名)。这对您来说应该不是问题,因为它们在 IMO 中非常罕见。

-z 将尝试压缩流中的数据(稍微加快速度)。

-v 将确保它为您提供充足的输出。