Jug*_*ler 130 linux filesystems
我想将整个文件系统层次结构从一个驱动器复制到另一个驱动器......即每个目录的内容以及 Linux 平台中的常规文件。很高兴知道使用可能的 Linux 内置函数来做到这一点的最佳方法。文件系统是一个 ext 系列。
Mic*_*yan 254
你想要的是rsync。
此命令可用于同步文件夹,也可在中止时恢复复制。复制一张磁盘的命令是:
rsync -avxHAX --progress / /new-disk/
Run Code Online (Sandbox Code Playgroud)
选项是:
-a : all files, with permissions, etc..
-v : verbose, mention files
-x : stay on one file system
-H : preserve hard links (not included with -a)
-A : preserve ACLs/permissions (not included with -a)
-X : preserve extended attributes (not included with -a)
Run Code Online (Sandbox Code Playgroud)
要提高复制速度,请添加-W( --whole-file),以避免计算文件的增量/差异。当源和目标都指定为本地路径时,这是默认设置,因为 rsync 的增量传输算法的真正好处是减少网络使用。
还要考虑添加--numeric-ids以避免按用户/组名称映射 uid/gid 值。
Ili*_*nko 102
Michael Aaron Safyan 的回答没有考虑稀疏文件。-S选项解决了这个问题。
此外,此变体不会随着每个文件的进行发送垃圾邮件,也不会进行增量同步,这会在非网络情况下降低性能。
非常适合将文件系统从一个本地驱动器复制到另一个本地驱动器。
rsync -axHAWXS --numeric-ids --info=progress2
Run Code Online (Sandbox Code Playgroud)
小智 37
我经常用
> cp -ax / /mnt
Run Code Online (Sandbox Code Playgroud)
假设 /mnt 是挂载在 /mnt 上的新磁盘,并且 / 上没有其他挂载。
-x 将它保存在一个文件系统上。
这当然需要以 root 身份或使用 sudo 来完成。
此链接有一些替代方案,包括上面的一个
http://linuxdocs.org/HOWTOs/mini/Hard-Disk-Upgrade/copy.html
就像上面的 Michael Safyan 建议的那样,我已经用于rsync此目的。我建议使用一些附加选项来排除您可能不想复制的目录。
这个版本相当特定于基于 Gnome 和 Debian/Ubuntu 的系统,因为它包含特定于 Gnome 的用户主目录的子目录,以及 APT 包缓存。
最后一行将排除任何名为 cache/Cache/.cache 的目录,这对于某些用途来说可能过于激进:
rsync -WavxHAX --delete-excluded --progress \
/mnt/from/ /mnt/to/
--exclude='/home/*/.gvfs' \
--exclude='/home/*/.local/share/Trash' \
--exclude='/var/run/*' \
--exclude='/var/lock/*' \
--exclude='/lib/modules/*/volatile/.mounted' \
--exclude='/var/cache/apt/archives/*' \
--exclude='/home/*/.mozilla/firefox/*/Cache' \
--exclude='/home/*/.cache/chromium'
--exclude='home/*/.thumbnails' \
--exclude=.cache --exclude Cache --exclude cache
Run Code Online (Sandbox Code Playgroud)
正如 JuniorRubyist 的评论中提到的,这里的首选方法应该是使用dd. 主要原因是性能,它是逐块复制而不是逐文件复制。
克隆分区
# dd if=/dev/sda1 of=/dev/sdb1 bs=64K conv=noerror,sync status=progress
Run Code Online (Sandbox Code Playgroud)
克隆整个磁盘
# dd if=/dev/sdX of=/dev/sdY bs=64K conv=noerror,sync status=progress
Run Code Online (Sandbox Code Playgroud)
克隆已挂载的可写分区
克隆以可读写方式挂载的分区的关键是将其重新挂载为只读。然后进行克隆,最后再次重新挂载为可读写。
# mount -o remount,ro /path/to/mount_point
# dd if=/dev/sda1 of=/dev/sdb1 bs=64K conv=noerror,sync status=progress
# mount -o remount,rw /path/to/mount_point
Run Code Online (Sandbox Code Playgroud)
笔记。这样做可能会对正在运行的应用程序产生一些副作用。例如,如果您的系统有一些应用程序需要在您需要克隆该特定分区时准确写入该分区,则在克隆分区时需要停止这些应用程序。或者,如果它是您自己的应用程序,请重新编写它来处理这种情况。
克隆具有一个或多个已安装可写分区的磁盘
策略和副作用与克隆已安装的可写分区相同,只不过这次对每个可写安装点重复重新安装命令。
# mount -o remount,ro /path/to/writeable_mount_point1
# mount -o remount,ro /path/to/writeable_mount_point..
# mount -o remount,ro /path/to/writeable_mount_pointN
# dd if=/dev/sdX of=/dev/sdY bs=64K conv=noerror,sync status=progress
# mount -o remount,rw /path/to/writeable_mount_point1
# mount -o remount,rw /path/to/writeable_mount_point..
# mount -o remount,rw /path/to/writeable_mount_pointN
Run Code Online (Sandbox Code Playgroud)
最后的笔记
执行磁盘/分区克隆的首选和推荐方法是在未安装的系统上执行此操作,因为这不会产生任何不确定的副作用。对于基于只读安装概念构建的系统也是如此。
参考
| 归档时间: |
|
| 查看次数: |
226342 次 |
| 最近记录: |