Використання rsync для резервного копіювання


14

В даний час я створюю резервну копію вмісту зовнішнього жорсткого диска A шляхом (1) видалення всього зовнішнього жорсткого диска призначення B та (2) копіювання всього з A до B (у Finder). Зовнішній жорсткий диск містить лише "основні дані" (папки, зображення, відео, документи тощо), нічого фантазійного / дивного.

Але з усіма дивовижними безкоштовними інструментами, які існують там, я не зміг знайти гідного резервного копіювання (пропозиції прийняті).

Я хочу це автоматизувати. Після кількох пошуків, здається, я можу скористатися rsync. Тоді я хочу автоматизувати це за допомогою, rsyncщоб уникнути копіювання файлів, які вже є на жорсткому диску призначення (звичайно, якщо було внесено зміни, я хочу оновити файл / папку; те саме зі видаленими файлами / папками чи новими файлами / папки; ідея полягає в тому, щоб імітувати те, що зазвичай роблю вручну з Finder).

Я дійшов до цього моменту

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

Тепер журнал сповнений файлів, назва яких починається з .або ._навіть ._.. Чи потрібні вони?

Питання

Як я можу скопіювати лише ті важливі файли, залишивши позаду всі ті, що не мають значення. Наприклад, якщо у мене є, photo.pngя розраховував би скопіювати photo.pngне ._photo.pngдекілька файлів.

Що --excludeабо --exclude-fromможна безпечно використовувати на Mac? Хорошим правилом може бути "просто скопіювати все, що показує Finder". Це те, що я скопіював би, якби пройшов вручну через усі папки.

 Додаткове запитання

Чи -av --progress --deleteдостатньо? Чи вчиняю я злочин чи ризикую деякими даними? Які варіанти ви б використали.

Будь ласка, поверніть свою відповідь деякими аргументами, я би вдячний.

Я шукаю спосіб автоматизації, rsyncякий здається досить потужним та безкоштовним у використанні.


Коментарі не для розширеного обговорення; ця розмова була переміщена до чату .
bmike

Що стосується стратегії, описаної в 1-му пункті, що станеться, якщо після (1) - видалення всього в B - серйозна проблема трапиться з A? Ви можете втратити доступ до даних на A та попередній її резервній копії. Якщо у вашому сховищі резервного копію є достатньо місця, як щодо видалення резервної копії лише після успішного завершення нової резервної копії?
Рікардо

1
@ bmike посилання на розмову, яку було переміщено до чату, порушено.
Мерчако

Відповіді:


17

Для максимальної безпеки скопіюйте все

Безпечним варіантом є скопіювати всі , в тому числі невидимих файлів мета-даних.

Файли, як правило, існують з причини та в міру зміни програмного забезпечення, а також існування, призначення та вміст цих файлів метаданих. Копіювання всього зменшить навантаження на технічне обслуговування та запропонує простоту, що нічого не втрачається.

Файл журналу, створений компанією, rsyncбуде технічно задіяний самою природою rsyncінструменту командного рядка. Подумайте про те, щоб представити прибрані, метафіковані дані та навіть кольоровий кодований вихід для перевірки користувачем. Це можна зробити за допомогою широкого спектру сценаріїв та мов. Будь ласка, задайте більше питань тут на запитання "Різні" та на StackOverflow, якщо вам потрібна допомога в цьому підході.

Видалення останніх та копіюючих ресурсів OS X

Щодо rsyncпрапорів, погляньте на питання Найшвидший і безпечний спосіб копіювання масивних даних з одного зовнішнього накопичувача на інший . У цьому питанні використовуються та пояснюються декілька додаткових прапорів:

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

У цій ситуації Eзастереження забезпечить копіювання вилок ресурсів та інших специфічних для Mac властивостей.

Ви можете розглянути --delete-afterможливість уникати видалення, поки копія не буде завершена; Зверніть увагу, що такий підхід потенційно потребуватиме призначення накопичувача вдвічі більше, ніж джерело.

Можливі виключення

Відповідь на відповідне запитання: Як я можу опустити файли FCPX візуалізації з резервної копії машини Time? , надав корисне посилання файлів і папок OS X, які можна виключити з більшості резервних копій . Це посилання містить практичний перелік шаблонів файлів, папок та шляхів, які ви можете виключити.

Включити файли з крапками

Є вагомі причини створити резервну копію файлів, починаючи з крапок, .*відповідних файлів.

Деякі програми зберігають вподобання, налаштування та іншу ціннісну інформацію в папках у верхній частині папки користувача у невидимих ​​точкових попередньо встановлених папках. Запуск ls -la ~/виявить ці папки та файли.

Якщо будь-який користувач використовує або має програмне забезпечення, яке, у свою чергу, використовує програмне забезпечення для контролю версій, обов’язково створіть резервні копії точкових файлів. Програмне забезпечення, як subversion і git, зберігає критичну інформацію у своїх точкових папках. Ці приховані папки можуть бути розкидані по вашій файловій системі, де завжди перевіряється проект.

Прожектор та доступ до диска

Прожектор - служба пошуку OS X. Spotlight використовує цей mdworkerпроцес для індексації та оновлення каталогу пошуку. Якщо вас турбують можливі пошкодження диска або повільні копії, відключенняmdworker під час роботи rsyncможе допомогти. Особисто я залишаю Spotlight працювати під час великих rsyncпередач.


3
Найбезпечніший варіант - скопіювати все, включаючи невидимі файли метаданих. Але те саме посилання від Carbon Copy Cloner говорить про те, що є певні файли, які автоматично вбудовані, тому вони можуть навіть пошкодити їх, якщо ви скопіювали rsync.
Мануель

1
Ви можете додати повний приклад для майбутніх читачів. Я знайшов два джерела, одне і два (плюс третє, яке ви пов’язали); Я залишаю їх тут для подальшого ознайомлення.
Мануель

1
"Є вагомі причини створити резервну копію файлів, починаючи з крапок": так! Ці файли приховані (від Finder для манекенів), але більшість часу це дуже важливі файли.
дан

1
EІ --delete-afterключові моменти , які роблять з цієї відповіді виграшний.
дан

1
@danielAzuelos Наскільки -Eв нових версіях є, -Xде я бачу, що рекомендується в деяких місцях, який з них правильний? Або обоє? Мені б хотілося, щоб оновлений, псевдоповний, який охоплює більшість загальних проблем. Чи може копіювання файлів Spotlight простіше та швидше, ніж дозволяти їх генерувати? Як я можу зупинити прожектор, щоб тим часом не заплутатися? Що про caffeinateпроцес? Або це може бути, якщо це лише резервний список, який не підлягає індексації за допомогою Spotlight, набагато менше турбот тощо. На багато запитань відповіли точно.
Мануель

5

Якщо ви використовуєте rsyncверсію 3.0.6 за Carbon Copy Cloner або 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 .
користувач74686

4

Я б радив не обрізати метадані під час створення резервної копії, особливо точкових файлів, наприклад ._$filename, якщо ви дійсно хочете виключити dot-файли з вашої rsyncкоманди, додайте --exclude '.*'до них.

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

Це добре. Я не був впевнений, чи буде видалення всіх точкових файлів проблематичним (до речі, чи є різниця між '.*'і '/.*'?). Я не думаю, що Finder копіює їх усіх, можливо, це лише деякі пов'язані. У такому випадку я вважаю за краще виключити лише непотрібні (наприклад, .DS_Store). І так, ті, що можуть бути важливими, але які я не хочу мати у своєму журналі, я можу фільтрувати за допомогою регулярних виразів.
Мануель

1
Те, що копії Finder недокументовано, і це є проблемою для кожного при розробці політики резервного копіювання. Вам слід зберегти копію всіх файлів, якщо ви хочете створити резервну копію, яка могла б бути використана саме на Aдиску.
дан

@danielAzuelos Це не так, якщо основний жорсткий диск A вмирає, я куплю третій жорсткий диск C, скопіюйте з жорсткого диска B на жорсткий диск C і, можливо, почну використовувати один з B або C. Я знову кажу, що це не той тип резервного копіювання, який потрібно використовувати, як те, що робить SuperDuper. Просто мої фотографії краще в двох місцях, а не в одному.
Мануель

4

Я не зовсім задоволений нинішніми відповідями, але я спробую тут розкрити трохи можливостей, які я бачив в Інтернеті, намагаючись знайти гарне налаштування rsync.

І, до речі, якщо когось цікавить Time Machine, як копії, є rsnapshot. А також є Unison для двосторонньої синхронізації. Плюс, насправді є кілька графічних інтерфейсів, таких як утиліта резервного копіювання та arRsync ; не саме те, що я шукав, але вони можуть зробити роботу для когось.

По-перше, мій єдиний намір полягав у копіюванні фотографій та відео, тому точна копія не потрібна, отже, не потрібно надто доглядати . Насправді більшість моїх сумнівів були, якби я міг виключити все (те саме, що трапиться, якби, скажімо, я завантажив фото з Інтернету, я просто завантажував .png, все інше не завантажувались, а автогенерували ).

Ось неструктурований перелік думок, які ви, можливо, захочете врахувати

  • Я хочу переконатися, що ваш ноутбук не лягає спати, можливо, ви захочете в caffeinateцьому процесі caffeinate -s rsync -av .... Взято звідси .

  • Якщо ви робите локальні копії, як в моєму випадку, або навіть якщо підключення до Інтернету не надто повільно, ви повинні НЕ використовувати -zпараметр (стиснення), і використання -W(передача весь файл, а не передачі дельти, це по замовчуванням , коли місцеві) і, ймовірно, використовувати --inplaceдля швидкого переказу. Взято звідси .

  • Ви можете використовувати --delete-afterтак, що будь-який файл буде спочатку переданий, а потім переміщений за призначенням (і видалений оригінальний) і безпечніший, ніж видалення перед передачею або під час передачі.

  • Ви можете зупинити передачу, натиснувши її ctrl + C, і вона зупиниться чисто. Взято звідси . Це було одним із моїх страхів із SuperDuper !, якщо вам потрібно зупинити передачу, ви отримаєте повідомлення "Ви залишите жорсткий диск у невідомому стані ...".

  • В останніх версіях є ще щось, --info=progress2що додає ще більше деталей -v.

  • Є -P(що дорівнює --partialі --progress), яке залишить там передані файли середнього розміру, щоб ви могли продовжувати роботу при перезапуску процесу (якщо з якихось причин ви не можете одразу закінчити синхронізацію).

  • Можливо, вам буде цікаво зупинити прожектор або 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.
Мануель
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.