使用rsync备份


14

我目前通过以下方式备份外部硬盘驱动器A的内容:(1)删除目标外部硬盘驱动器B中的所有内容,以及(2)将所有内容从A复制到B(在Finder中)。外部硬盘驱动器仅包含“基本数据”(文件夹,图像,视频,文档等),没有花哨/怪异的东西。

但是,由于存在着所有令人惊奇的免费工具,我找不到合适的备份工具(建议接受)。

我想使它自动化。经过几次搜索,看来我可以使用了rsync。然后,我想通过使用自动操作rsync来避免复制目标硬盘驱动器上已经存在的文件(当然,如果进行了更改,我想更新文件/文件夹;与已删除的文件/文件夹或新文件相同) / folders;其想法是模仿我通常使用Finder手动执行的操作)。

我到了这一点

rsync -av --progress --delete /Volumes/A/ /Volumes/B

现在,日志中充满了名称以.or ._或什至开头的文件._.。他们有必要吗?

我如何只复制重要的文件,而将所有无关紧要的文件留在后面。例如,如果有的话,我photo.png希望复制photo.png,而不是._photo.png很多文件。

什么--exclude--exclude-from可以在Mac上安全使用?最好的规则是“只要复制Finder显示的所有内容”,如果我手动通过所有文件夹,我将复制该内容。

 额外的问题

是否-av --progress --delete足够?我是在犯罪还是冒着一些数据风险?您将使用哪些选项。

请以一些论点支持您的回答,我将不胜感激。

我正在寻找一种自动化的方法,rsync该方法似乎功能强大并且可以免费使用。


评论不作进一步讨论;此对话已转移至聊天
bmike

关于第1段所述的策略,如果在(1)之后-删除了B中的所有内容-A发生了严重问题,该怎么办?您可能无法访问A及其先前备份上的数据。如果您的备份存储空间足够大,那么仅在成功完成新的备份后才删除备份吗?
里卡多(Ricardo)

1
@bmike到移动到聊天的对话的链接已断开。
Merchako

Answers:


17

为了获得最大的安全性,请复制所有内容

最安全的办法是复制一切,包括不可见的元数据文件。

文件存在的原因是有原因的,并且随着软件的更改,这些元数据文件的存在,目的和内容也将存在。复制所有内容将减少维护负担,并使您轻松无忧。

作为命令行工具的rsync本质,由创建的日志文件将在技术上涉及rsync。考虑呈现整理过的,经过元数据过滤的甚至是彩色编码的输出,供用户检查。您可以使用多种脚本工具和语言来实现。如果您需要有关此方法的帮助,请在此处在Ask AskStackOverflow上询问更多问题。

删除最后一个并复制OS X资源

关于rsync标志,请看一下将海量数据从一个外部驱动器复制到另一个驱动器的最快和最安全的方法。在此问题中,使用并解释了一些其他标志:

sudo rsync -vaE --progress --delete-after /Volumes/SourceName /Volumes/DestinationName

在这种情况下,E将确保复制资源派生和其他Mac特定的属性。

您可能要考虑--delete-after避免在复制完成之前删除它。请注意,这种方法可能需要目标驱动器大小是源驱动器大小的两倍。

可能的排除

一个相关问题的答案:如何从Time Machine备份中省略FCPX渲染文件?,提供了OS X文件和文件夹的有用链接,这些链接可以从大多数备份中排除。该链接提供了可以排除的文件模式,文件夹和路径的实用列表。

包含点文件

有充分的理由备份以点开头,.*匹配的文件。

某些软件会在用户文件夹顶部的不可见点前缀文件夹中保留首选项,设置和其他有价值的信息。运行ls -la ~/将显示这些文件夹和文件。

如果任何用户使用或拥有反过来使用版本控制软件的软件,请确保备份点文件。Subversiongit之类的软件都将重要信息存储在其点文件夹中。这些隐藏的文件夹可以散布在您的文件系统中,无论项目检出在哪里。

聚光灯和磁盘访问

Spotlight是OS X的搜索服务。Spotlight使用该mdworker过程来索引和更新搜索目录。如果您担心磁盘损坏或副本速度慢,则在运行时禁用它mdworkerrsync可能会有所帮助。就个人而言,我在运行大型rsync传输时让Spotlight运行。


3
最安全的选择是复制所有内容,包括不可见的元数据文件。但Carbon Copy Cloner的相同链接指出,有些文件是自动建立的,因此如果用rsync。复制甚至可能损坏它们。
曼努埃尔

1
您可以为将来的读者添加完整的示例。我找到了两个来源,一个两个(加上您链接的第三个);我将它们留在这里以备将来参考。
曼努埃尔

1
“有充分的理由备份以点开头的文件”:是的!这些文件是隐藏的(对于傻瓜来说是从Finder查找的),但是大多数情况下,这些文件都是非常重要的文件。
2013年

1
E--delete-after是使这个答案获胜的一个关键点。
2013年

1
@danielAzuelos截至-E,在较新版本中-X,我在某些地方推荐了该版本,哪个是正确的?还是两者都?我想要一个涵盖大多数一般担忧的最新伪完整文档。与允许生成Spotlight文件相比,复制Spotlight文件会更容易,更快吗?如何停止Spotlight,使其同时不会混乱?怎么样caffeinate呢?或者可能只是备份列表,使其无法被Spotlight索引,更少的担忧等。可以肯定地回答了许多问题。
曼努埃尔

5

如果您使用的rsync是Carbon Copy Cloner的3.0.6版本或Homebrew的3.1.2版本,则可以从Carbon Copy Cloner参数中获取提示:

rsync -A -X -H -p --fileflags --force-change -l -N -rtx --protect-decmpfs --numeric-ids -go --delete-during --backup --backup-dir=</PATH/TO/STICK/BACKUP_when_using_delete> --protect-args <SRC>/ <DEST>


--protect-decmpfs从3.1.3版本开始不再可用,请参阅github.com/Homebrew/homebrew-core/pull/23415
user74686

4

我建议不要在备份过程中修剪元数据,尤其是点文件,例如._$filename,但是如果您真的想从命令中排除点文件,请rsync添加--exclude '.*'到该文件中。

rsync -av --exclude '.*' --progress --delete /Volumes/A/ /Volumes/B

很好 我不确定删除所有的点文件是否会有问题(顺便说一下,'.*'和之间是否有任何区别'/.*'?)。我不认为Finder会复制所有这些文件,可能只是一些相关联的文件。在那种情况下,我宁愿只排除那些不必要的(例如.DS_Store)。是的,那些可能很重要,但我不想在日志中包含的内容可以过滤正则表达式。
曼努埃尔

1
Finder复制的内容没有记录,这是构建备份策略时每个人的问题的根源。如果要备份,可以完全代替磁盘使用,则应维护所有文件的副本A
2013年

@danielAzuelos情况并非如此,如果主硬盘驱动器A死了,那么我将购买第三个硬盘驱动器C,从硬盘驱动器B复制到硬盘驱动器C,并可能开始使用B或C中的一个。我再说一遍,这不是SuperDuper所需要的那种备份。只是我的照片在两个地方而不是一个地方更好。
曼努埃尔

4

我对目前的答案并不完全满意,但是我将尝试在这里介绍一些我在网络上看到的可能性,以尝试为找一个不错的设置rsync

而且,顺便说一句,如果有人对Time Machine感兴趣,例如副本,那就是rsnapshot。还有Unison,用于双向同步。另外,实际上有一些GUI,例如Backup UtilityarRsync;不完全是我要找的东西,但他们可能会为某人做这份工作。

首先,我唯一的目的是复制照​​片和视频,因此不需要精确的复制,因此不必太在意。实际上,我的大部分疑问是我是否可以排除所有内容(例如,如果我从互联网上下载了一张照片,而我只是下载了一个.png,则其他所有内容都没有下载而是自动生成的)。

这是您可能需要考虑的非结构化想法列表

  • 我想确保您的笔记本电脑不睡觉,您可能需要执行caffeinate该过程caffeinate -s rsync -av ...。取自这里

  • 如果您要进行本地复制(例如我的情况),或者即使互联网连接不太慢,也不应使用-z选项(压缩),而应使用-W(传输整个文件,而不是增量传输;这是本地时的默认设置)并可能用于--inplace快速转移。取自这里

  • 您可以使用--delete-after任何文件,然后将其首先传输,然后再移至目标位置(并删除了原始文件),比传输之前或传输期间删除文件更安全。

  • 您可以通过按停止传输ctrl + C,然后传输将完全停止。取自这里。这是我对SuperDuper!的担心之一,如果您需要停止传输,则会收到消息“您将使硬盘驱动器处于未知状态……”。

  • 在最新版本中,--info=progress2它为添加了更多详细信息-v

  • -P(等于--partial--progress)会将传输中的文件保留在那里,因此您可以在重新启动进程时继续操作(如果由于某种原因您无法立即结束同步)。

  • 可能有兴趣在复制之前停止Spotlight或TimeMachine,并在传输后重新启用它们。甚至禁用外部磁盘的Spotlight。

  • 在所有这些文献中使用其他选项包括-x(或--one-file-system), (-E),--executability( ),-H(),--hard-links (),和,,。您可能要看看它们。-X--xattrs-A--acls--sparse--hfs-compression--protect-decmpfs

对我来说,一个基本命令看起来像(我可能会使用更多选项,但这足以作为示例):

caffeinate -s rsync -av --delete-after --progress --stats --exclude-from 'excludefile.txt' \
  "/Volumes/SrcHDD/" "/Volumes/DstHDD" # note the trailing slash / after the source

现在以我为例,我可以只包含{*.jpg,*.png,*.mp4,*.txt,*.pdf,…}一个,而没有人会说“您还需要系统文件”,但是由于我不想搜索以获取我拥有的文件的所有可能的文件类型,因此我希望排除。有些事情不仅可以而且似乎很方便排除。

我找到了一些链接,按照您想要的去做:

  1. https://bombich.com/kb/ccc4/some-files-and-folders-are-automatically-excluded-from-backup-task

  2. https://gist.github.com/tvwerkhoven/4541989

  3. https://github.com/necolas/dotfiles

  4. https://gist.github.com/shkm/5531679

  5. http://www.hackurmac.com/2014/08/backing-up-and-restoring-your-hackintosh.html

  6. https://github.com/jedda/Counterpart

  7. http://alanwsmith.com/rsync-exclude-list-for-mac-osx

从那里您可能会得到什么是安全或理智的要忽略的东西。这是完整列表(我刚刚删除了重复项)

.HFS+ Private Directory Data*
/.journal
/.journal_info_block
.AppleDouble
.AppleDB
/lost+found

.metadata_never_index
.metadata_never_index_unless_rootfs
/.com.apple.timemachine.donotpresent
.VolumeIcon.icns
/System/Library/CoreServices/.disk_label*
/TheVolumeSettingsFolder

.DocumentRevisions-V100*
.Spotlight-V100
/.fseventsd
/.hotfiles.btree
/private/var/db/systemstats

/private/var/db/dyld/dyld_*
/System/Library/Caches/com.apple.bootstamps/*
/System/Library/Caches/com.apple.corestorage/*
/System/Library/Caches/com.apple.kext.caches/*

/.com.apple.NetBootX

/Volumes/*
/dev/*
/automount/*
/Network/*
/.vol/*
/net

/private/var/folders/zz/*
/private/var/vm/*
/private/tmp/*
/cores/*

.Trash
.Trashes

/Backups.backupdb
/.MobileBackups
/.MobileBackups.trash
/.MobileBackups.trash

Library/Mobile Documents.*
.webtmp

/Library/Caches/CrashPlan
/PGPWDE01
/PGPWDE02
/.bzvol
/Library/Application Support/Comodo/AntiVirus/Quarantine
/private/var/spool/qmaster
$Recycle.Bin
Saved Application State
Library/Preferences/ByHost/com.apple.loginwindow*

.AppleDesktop
.com.apple.timemachine.supported
Network Trash Folder
/Library/Caches/*
/private/var/spool/postfix/*
$RECYCLE.BIN
/stuff/*
/afs/*
/private/var/run/*
/Previous Systems.localized
/tmp/*
.dbfseventsd
.DS_Store
.PKInstallSandboxManager
.SymAV*
.symSchedScanLockxz
.TemporaryItems
Desktop DB
Desktop DF
hiberfil.sys
pagefile.sys
Recycled
RECYCLER
System Volume Information
Temporary Items
Thumbs.db
AUTORUN.INF
Autorun.inf
autorun.inf

3

我已经将rsync用于多个任务的备份,并且我在家中使用它。

我强烈推荐它,但要进行一些修改。作为备份工具,它很棒,但是作为归档工具,它有点扁平。是的,它会复制所有内容,但是您不会获得所有内容的版本,只能获取最新版本。

我使用本指南http://www.mikerubel.org/computers/rsync_snapshots/作为起点。阅读整个页面。它很好地解释了这些选项,并概述了如何实施增量备份。令人惊讶的是,该文章已有10多年的历史了,但今天仍然适用。要爱unix。


1
谢谢。无论如何,我都想讲一讲Mac OS X下可能要考虑的特殊注意事项rsync。无论如何,良好的链接涵盖了很多内容,rsync但是到目前为止,有一种工具可以做到这一点:rsnapshot
曼努埃尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.