将 NTFS 分区转换为 ext4 - 如何复制数据?

pie*_*mes 3 ntfs hard-drive partitioning ext4

我想将我D:\所有数据的分区从 NTFS 转换为 ext4,互联网告诉我应该执行以下操作:

  1. 将所有分区缩小到最小大小
  2. 备份我的数据(通过在 GParted 中克隆分区来完成)
  3. 将分区格式化为 ext4(尚未完成,但并不难)
  4. 将备份复制到驱动器
  5. 删除备份并增加所有分区

而且我不知道如何做第 4 部分。我真的可以像复制文件夹一样复制整个驱动器吗?有专门的工具吗?如何确保我不会错过系统隐藏的任何文件夹或符号链接等?如果这很重要,我有一个 Ubuntu live USB-Stick 可以使用。

Gab*_*les 6

1. FreeFileSync GUI 工具(Windows、Mac、Linux)

为确保您不会遗漏任何数据,我强烈建议您使用像FreeFileSync这样好的文件复制工具。它是图形化的、免费的、免费和开源的,并且是跨平台的(Windows、Mac、Linux)。只要确保不要搞砸并向后复制,删除所有内容!然而,这并不难做到,因为它是图形化的并且非常用户友好。

只需使用左侧的和右侧的目标设置文件夹,然后单击右上角的齿轮并选择“镜像”选项从左到右镜像,然后按左上角的“比较”按钮。一旦确定需要复制什么,它就会弹出一个信息屏幕,显示它将要做什么(它将创建、覆盖或删除多少文件等)。确保您在垃圾桶旁边看不到任何东西(指示要删除的内容),或者您看到要删除的预期文件,用垃圾桶和减号标记,然后按“同步”按钮开始。瞧!便于使用。这是一个屏幕截图:在此处输入图片说明

2. rsync 命令行工具(Linux、Windows 和 Cygwin)(又名:“如何使用 rsync”):

如果您正在从 Linux 进行复制,当然您也可以使用 FreeFileSync,但如果您是命令行大师,您可能会rsync更喜欢。它是一个仅限命令行的工具,更难使用,但仍然非常强大,尽管不如 FreeFileSync 强大,因为它不能很好地处理双向同步。下面是一些我最喜欢的rsync命令:

  1. 从源复制到目标,在目标中留下任何不冲突的内容仍然完好无损:

     sudo rsync -rah --stats --info=progress2 '/path/to/source' '/path/to/destination'
    
    Run Code Online (Sandbox Code Playgroud)

    或者,添加--verbose,或者只是-v(或-rahv在我的情况下)还可以获取将要复制的内容的完整列表。

    或者,添加--dry-run以显示发生什么但实际上还没有这样做。

    或者,您还可以将要复制到这样的stdout.log文件的整个文件列表以及任何错误记录到这样的stderr.log文件中。在这里,我通过删除来删除进度指示器--info=progress2,这样日志文件就不会被任何地方的进度信息污染:

     (sudo rsync -rah --verbose --dry-run --stats '/path/to/source' '/path/to/destination' | tee -a '/path/to/stdout.log') 3>&1 1>&2 2>&3 | tee -a '/path/to/stderr.log'
    
    Run Code Online (Sandbox Code Playgroud)

    --dry-run当准备好实际制作副本时,从上面删除。在真正运行脚本之前,请务必查看stdout.log文件--stats末尾的 stats 段落打印输出(因为您有),以确保它看起来不错。

    下面是--stats通过执行下面的 MIRROR 选项获得的输出示例。注意它正在删除一些文件。请注意这一点,因为删除文件无法撤消(至少在没有特殊软件恢复工具的情况下不能)。请记住,它是永久删除它们,而不是将它们发送到某种回收站或其他东西,所以要小心!

    文件数:102,033(注册:89,638,目录:9,867,链接:2,502,特殊:26)
    创建文件数:3(注册:3)
    删除文件数:9,861(注册:9,360,目录:474,链接: 27)
    传输的常规文件数:25
    总文件大小:8.12G 字节
    总传输文件大小:35.30M 字节
    文字数据:35.30M 字节
    匹配数据:0 字节
    文件列表大小:917.43K
    文件列表生成时间:0.007 秒
    文件列表传输时间:0.000 秒
    发送的
    总字节数:38.33M 接收的总字节数:1.02M

    发送 38.33M 字节 接收 1.02M 字节 7.15M 字节/秒
    总大小为 8.12G 加速为 206.37

  2. 从源到目标的镜像,这意味着还要删除目标中不在源中的任何内容(注意上面显示的统计输出中的“已删除文件数”行),添加--delete --delete-excluded(即使我们还没有排除任何内容,一旦你了解了--exclude=PATTERN语法,你也会意识到你想要这个--delete-excluded标志)。

    一、安全试运行版:

     (sudo rsync -rah --verbose --dry-run --stats --delete --delete-excluded '/path/to/source' '/path/to/destination' | tee -a '/path/to/stdout.log') 3>&1 1>&2 2>&3 | tee -a '/path/to/stderr.log'
    
    Run Code Online (Sandbox Code Playgroud)

    现在危险危险危险 - 如果您执行源和目标向后版本,则可以删除所有内容(因此在继续之前检查 stdout.log 末尾的统计输出):

     (sudo rsync -rah --verbose --stats --delete --delete-excluded '/path/to/source' '/path/to/destination' | tee -a '/path/to/stdout.log') 3>&1 1>&2 2>&3 | tee -a '/path/to/stderr.log'
    
    Run Code Online (Sandbox Code Playgroud)

    现在版本不保存到任何日志文件,以防您只想查看实时进度和最后的统计段落,但没有在 stdout.log 中复制或删除单个文件的日志,或打印错误在 stderr.log 中:

     sudo rsync -rah --info=progress2 --stats --delete --delete-excluded '/path/to/source' '/path/to/destination'
    
    Run Code Online (Sandbox Code Playgroud)
  3. 而这只是 rsync 的开始。阅读手册:man rsync,或在线:https://linux.die.net/man/1/rsync,并记住您可以混合和匹配我上面显示的许多选项。其他真正有用的事情包括设置一个source.txt文件和一个exclude.txt文件,分别包含和排除文件和路径列表。分别使用选项--files-from='/path/to/source.txt'和执行此操作--exclude-from='/path/to/exclude.txt'。这是非常有用的。最后,这与--relative选项非常相配。最后,完整的 Bash 脚本可能如下所示:

      (sudo rsync $OPTIONS $SRC $DEST | tee -a $LOG_STDOUT) 3>&1 1>&2 2>&3 | tee -a $LOG_STDERR
    
    Run Code Online (Sandbox Code Playgroud)

    ...$SRC您的源路径在哪里(在这种情况下,是source.txt文件中所有文件的相对路径,例如简单地使所有内容都相对于您的根目录),是您的目标路径,是您的路径'd想记录您的标准输出信息,是您想记录标准错误信息的路径,可能如下所示:/$DEST$LOG_STDOUT$LOG_STDERR$OPTIONS

     -rah --verbose --stats --relative --info=progress2 --delete --delete-excluded --dry-run --files-from='/path/to/source.txt' --exclude-from='/path/to/exclude.txt'
    
    Run Code Online (Sandbox Code Playgroud)

    而且,当然,如上所述,您可能希望根据需要删除--verbose--relative--info=progress2--delete--delete-excluded--dry-run,具体取决于您在做什么。

有关的:

  1. [我的回答] https://askubuntu.com/questions/17275/how-to-show-the-transfer-progress-and-speed-when-copying-files-with-cp/1275972#1275972
  2. [我的回答] https://unix.stackexchange.com/questions/65077/is-it-possible-to-see-cp-speed-and-percent-copied/567828#567828
  3. [我的回答] https://askubuntu.com/questions/527304/how-to-change-permission-of-a-drive-in-an-external-hard-disk/1302532#1302532

  • `rsync` 是一个非常棘手的野兽,我已经学会了尽可能明确_一直。_ (2认同)