我/home/jbruni
在运行 Ubuntu Server 10.04 LTS(Lucid Lynx)的 VPS 中有一个文件夹。
我即将关闭这个 VPS,并将一些东西从它转移到一个新的 VPS,也运行相同的 Ubuntu 版本。
目前,我想将所有内容/home/jbruni
从“旧” VPS 移动到新的 VPS。
1)我想保留所有文件权限和所有权设置(转移后我不想使用任何chown
) 。[注意:新的 VPS 已经拥有相同的用户/组,它们具有相同的 UID/GID。]chmod
2)我想保留所有符号链接和硬链接,尽管我相信在这种情况下没有一个硬链接。我有很多符号链接,既有文件也有文件夹,都指向自己/home/jbruni
文件夹内的位置。
3)我非常想保存日期和时间(mtime、atime、ctime)。[如果不可能,那也没那么糟糕。]
4) 在转移“旧”VPS 之前,我没有足够的磁盘空间来创建一个包含其中所有内容的大文件(就像一个大 tarball)。无论如何,如果真的非常需要,我可能会获得这个临时的额外空间。
因此,我想要的是源文件夹的“镜像”。有没有办法轻松实现这一点?(或者甚至不那么容易?)
谢谢你!
答案1
rsync
!
rsync -azv -e ssh ./localdirectory/ user@otherserver:/remote/dir
-a
是这里的坏孩子。它实际上是一个元论证,它调用了-rlptgoD
以下内容:
- 递归
- 保留符号链接
- 保留权限
- 保留修改时间
- “保留”组
- 保留所有者
- 并保存特殊的东西
它不会保留硬链接,因为硬链接是文件(其实它就是一个指向存储文件名的 inode 的指针 - 但常规文件也是如此 - 当您创建硬链接时,您只是为 inode 提供了一个额外的文件名)。这对您来说应该不是问题,因为在我看来它们非常罕见。
-z
将尝试压缩流中的数据(稍微加快速度)。
-v
将确保它给你足够的输出。
答案2
我会使用 rsync 来实现这一点。我相信它是在 Ubuntu 中默认安装的,但如果没有,那么您可以从存档中安装它。