如何有效地将修改过的文件从磁盘复制到外部 USB?

如何有效地将修改过的文件从磁盘复制到外部 USB?

my_projects_linux在 Ubuntu 文件系统中有一个名为 inside 的目录,其中包含我多年来的所有工作。该目录包含文件、子目录等。

为了备份目的,我偶尔会将该目录及其所有内容复制到外部硬盘上。

因此,我的外部驱动器的内容如下所示:

/mounted_drive/my_projects_linux
/mounted_drive/my_projects_windows  # the same idea to backup Windows work

因此,我正在寻找一个命令:

  1. 可以作为

    cp /home/my_projects_linux /mounted_drive/my_projects_linux
    

    它应该用我电脑中的新内容替换外部磁盘中的旧文件、子目录、子目录内的文件等。

  2. 要快。它应该只复制已修改的文件或新创建的文件。考虑到的大小my_projects_linux超过 50 GB,复制所有内容需要一个多小时,这太慢了。实际上,自上次备份以来通常只有几 MB 发生了变化,因此理论上复制速度可以更快。

怎么做?

我在 Google 上搜索到带有该-u标志的 cp 可能符合我的需求。这样可行吗(例如,它能正确处理子目录的子目录吗)?

另外,将文件系统存储在外部磁盘上是进行备份的合适方法吗?还是有更高级的方法?例如,使用云?请注意,更高级的方法应该很简单,否则它不会比执行一个 shell 命令的简易性更重要。

答案1

你正在描述rsync设计的目的。来自man rsync

   Rsync  finds  files  that  need to be transferred using a "quick
   check" algorithm (by default) that looks  for  files  that  have
   changed  in  size  or in last-modified time.  Any changes in the
   other preserved attributes (as requested by options) are made on
   the  destination  file  directly  when the quick check indicates
   that the file’s data does not need to be updated.

关于网络也有很多废话,但它也乐于做本地工作。
基本上你所需要的只是:

rsync -rtv /home/my_projects_linux /mounted_drive/my_projects_linux

有很多可用的选项,但-rtv会同步r递归地,保持imecodes 相同,同时详细了解它正在做的事情。

答案2

回答你的第二个问题,一种更奇特的备份方式是rdiff-backup

rdiff-backup 将一个目录备份到另一个目录,可能通过网络。目标目录最终成为源目录的副本,但额外的反向差异存储在该目标目录的特殊子目录中,因此您仍然可以恢复一段时间前丢失的文件。其理念是结合镜像和增量备份的最佳功能。rdiff-backup 还保留子目录、硬链接、dev 文件、权限、uid/gid 所有权、修改时间、扩展属性、acls 和资源分支。

如果你真的想使用基于云的:我使用付费订阅的 CrashPlan。然后你绝不不再需要考虑手动备份。

答案3

我知道这个问题已经有了可接受的答案。但是,我想添加一个跨平台 GUI 解决方案,因为我看到你也使用 Windows。我使用相同的目的免费文件同步.它也是牙线。

配置绝对直观,您可以保存不同的同步作业。

还有一个 ppa,但目前它不包含 14.04 的最新版本。要通过 ppa 安装:

sudo apt-add-repository ppa:freefilesync/ffs
sudo apt-get update

相关内容