Автоматическое и надежное резервное копирование данных

У меня на компьютере много музыки без потерь. К сожалению, иногда (сейчас довольно редко) они повреждались, и мне приходилось заменять их резервной копией с внешнего жесткого диска.

Резервное копирование было выполнено вручную, и это было, конечно, утомительно. По мере того как моя музыкальная коллекция росла, все труднее было найти вручную, альбом не был заархивирован.

Каким будет оптимальное решение для этого случая? Просто cp -ing? Некоторое использование rsync ? Я бы предпочел не обновлять существующие файлы – они вряд ли меняются, и я не хочу удалять хорошие файлы с коррумпированными.

Я всем сердцем рекомендую rsync . Он может автоматически определять, какие файлы отсутствуют в месте назначения по сравнению с источником, и копировать только их. IIUC, это лучшее решение для вашего случая использования. В вашем случае cp бесполезен, поскольку он всегда будет копировать все файлы и будет намного медленнее, чем rsync . Если вы поймете, как работает rsync это окажется лучшим решением для копирования большого набора данных в любом случае.

Просто имейте в виду, что если вы решили использовать rsync через сеть в будущем, он должен быть установлен как на исходной, так и на целевой машинах. Это единственный недостаток rsync который мне известен.

РЕДАКТИРОВАТЬ:

Использование rsync очень просто. Обычно это сводится к следующей команде:

 $ rsync -avz <SOURCE> <DESTINATION> 

-a означает режим архивации – рекурсивно копировать каталог и воссоздавать символические ссылки, сохранять разрешения, время модификации, группы ownerhsip, владельцы, -v означает verbose, -z означает сжимать

При загрузке добавляются временные имена файлов . , В следующий раз, когда будет запущена одна и та же команда, будут загружены только файлы, которые были изменены локально, а новые файлы, появившиеся в DESTINATION будут загружены из DESTINATION в SOURCE .

Легко использовать rsync поверх ssh :

 $ rsync -avz -e ssh hosting:/home1/rkumvbrh/mail/drabczyk.org/arkadiusz . 

-e ssh может быть опущен, поскольку ssh по умолчанию:

 $ rsync -avz hosting:/home1/rkumvbrh/mail/drabczyk.org/arkadiusz . 

При использовании rsync через сеть он должен быть установлен на концах bothe:

 $ rsync -avz -e "ssh" router:<FILE> . ash: rsync: not found rsync: connection unexpectedly closed (0 bytes received so far) [Receiver] rsync error: remote command not found (code 127) at io.c(226) [Receiver=3.1.0] 

РЕДАКТИРОВАТЬ:

Хорошо, сначала я подумал, что вы хотите заменить все файлы, которые были повреждены на вашем локальном диске, с файлами с внешнего диска и скопировать все новые файлы с внешнего диска. Но если вы хотите скопировать только новые файлы с вашего внутреннего диска на внешний диск, вы должны добавить параметр --ignore-existing чтобы новые файлы были скопированы на внешний диск, но поврежденные файлы не будут:

 $ rsync -avz --ignore-existing <PATH/TO/INTERNAL_HDD> <PATH/TO/EXTARNAL_HDD> 

От man rsync :

–ignore-existing Это говорит rsync пропустить обновления файлов, которые уже существуют в пункте назначения (это не игнорирует существующие каталоги, или ничего не получится). См. Также –existing.

  This option is a transfer rule, not an exclude, so it doesn't affect the data that goes into the file-lists, and thus it doesn't affect deletions. It just limits the files that the receiver requests to be transferred. This option can be useful for those doing backups using the --link-dest option when they need to continue a backup run that got interrupted. Since a --link-dest run is copied into a new directory hierarchy (when it is used properly), using --ignore existing will ensure that the already-handled files don't get tweaked (which avoids a change in permissions on the hard-linked files). This does mean that this option is only looking at the existing files in the destination hierarchy itself. 

Добавление команды -c в rsync гарантирует, что каждый файл будет одинаковым на обеих сторонах.