бэкапиться
Вытащенное из незапамятных времен, чтобы было.
- rsync, rdiff-backup
- rclone умеет Yandex Disk https://github.com/ncw/rclone
Когда я последний раз делала бэкап?
Если это было недавно, и за прошедшее время ничего интересного и стоящего сохранения на компе не появилось, то прекрасно. Если нет, сделай. Прямо сейчас. Как можно скорее.
Совет не новый, как и большинство похожих советов. И ценность его понимаешь только тогда, когда что-то случается.
Пока что я бэкаплюсь нерегулярно, но бэкаплюсь. И всё ещё помню шок, который пережила, думая, что вся собранная мной инфа по интересовавшей меня теме - погибла, когда попортился диск в нетбуке. Боюсь, что этот шок был причиной моего остывания к теме - я не стала пытаться собрать всё заново, просто печалилась. И тогда, наверное, от волнения и ещё от плохой организации системы, я не нашла сделанную раньше копию. Нашла совсем недавно. И быстро сделала ещё одну.
Мелочь, но действительно сильные и неприятные переживания, которых мне хотелось бы избежать. Поэтому я стараюсь бэкапиться чаще. Чтобы просто быть уверенной в наличии исправной копии всего.
7 марта 2016. Разгребаю старые бэкапы. Очень понимаю, почему мне не хотелось делать новые. Потому что множить бардак, ругательные слова. Потому что у меня эта тема не продумана как следует. И если я тут сделаю приемлемо, это будет плюс много спокойствия и уверенности.
8 марта 2016. Продолжаю думать бэкапы. Как ни странно, сложная задача - определить, что, собственно, у меня ценного и достойного сохранения, и как это отделить от неценного )
10 марта 2016
В порядке подготовки всего, что стоит сохранять, к сохранению, сделала очередной заход на упорядочение почты. Теперь почта вся лежит в одной папке, вся индексируется, одинаковые файлы удалены, и теперь я знаю, что у меня на нынешний момент 66 918 сообщений (это тех, которые считаются разными, не дублей), и занимает это счастье 8,5 гигабайт. Ну, понятно, что почта за несколько лет, что не только переписка с людьми, но и рассылки, а то и спам. И понятно, что не так страшны письма, как аттачи к ним. Но ничего так, ничего себе.
16 марта 2016.
Потихоньку бэкаплюсь. rdiff-backup, пока пинаю вручную. Разбираюсь с тем, что нужно, что не очень. Разгребаю какие-то давние-давние залежи. Смотрю, что происходит, когда бэкапимая папка меняется. И вообще, как оно всё. Потихоньку думаю, как сделать бэкапление по возможности автоматическим, когда всё немного устаканится. Понятно же, что разгребать - только вручную, решать только самой, это никому доверить нельзя. А вот уже решённое-разобранное-опробованное можно и компу поручить.
И да, правда, наличие "правдоподобного" бэкапа очень успокаивает. Даже частичного. Потому что за что-то уже спокойнее. За почту. За библиотеку и прочие подборки разновсякого. За какие-то свои текстики. За сохранность паролей. И надо будет намыслить, куда делать ещё одну копию. Потому что одной мало для спокойствия.
Инструмент, которым я собиралась пользоваться - rdiff-backup. Эта штука написана на python и использует в качестве основы rsync.
Создание бэкапов
В создании бекапов также проста как rsync:
rdiff-backup /source/path /destination/path
В результате в /destination/path будет создано зеркало каталога /source/path.
Если мы внесем какие-либо изменения в /source/path, а потом выполним команду бекапа повторно, утилита определит, что именно изменилась и добавить копию только изменившихся файлов, а может даже только изменившуюся часть этих файлов, хотя фиг знает. В любом случае появится новый слепок каталога.
Посмотреть наличие слепков можно командой:
rdiff-backup -l /destination/path Found 18 increments: increments.2012-07-14T21:51:05+06:00.dir Sat Jul 14 21:51:05 2012 increments.2012-07-15T21:51:03+06:00.dir Sun Jul 15 21:51:03 2012 increments.2012-07-15T22:02:30+06:00.dir Sun Jul 15 22:02:30 2012 increments.2012-07-16T21:51:08+06:00.dir Mon Jul 16 21:51:08 2012 increments.2012-07-19T21:51:08+06:00.dir Thu Jul 19 21:51:08 2012 increments.2012-07-25T21:51:02+06:00.dir Wed Jul 25 21:51:02 2012 increments.2012-07-27T21:51:04+06:00.dir Fri Jul 27 21:51:04 2012 increments.2012-07-28T21:51:08+06:00.dir Sat Jul 28 21:51:08 2012 increments.2012-07-30T21:51:04+06:00.dir Mon Jul 30 21:51:04 2012 increments.2012-07-31T21:51:09+06:00.dir Tue Jul 31 21:51:09 2012 increments.2012-08-01T21:51:03+06:00.dir Wed Aug 1 21:51:03 2012 increments.2012-08-07T21:51:03+06:00.dir Tue Aug 7 21:51:03 2012 increments.2012-08-11T21:51:06+06:00.dir Sat Aug 11 21:51:06 2012 increments.2012-08-12T21:51:07+06:00.dir Sun Aug 12 21:51:07 2012 increments.2012-08-13T21:51:03+06:00.dir Mon Aug 13 21:51:03 2012 increments.2012-08-16T21:51:08+06:00.dir Thu Aug 16 21:51:08 2012 increments.2012-08-19T21:51:03+06:00.dir Sun Aug 19 21:51:03 2012 increments.2012-08-23T00:38:15+06:00.dir Thu Aug 23 00:38:15 2012 Current mirror: Sat Aug 25 01:25:01 2012
Утилита делает инкремент только в том случае, если были внесены какие-то изменения в файлы и каталоги со времени последнего выполнения бекапа. Благодаря этому мы получаем ряд полезных плюшек:
- Возможность экономить дисковое пространство. Если я не ошибаюсь, инкременты делаются до тех пор, пока их суммарный объем не превысит половины объема от последнего полного бекапа. Когда это случается, делается снова полный бекап
- Возможность вернуться не просто к последнему бекапу, а бекапу за определенное число
- Управлять всем этим хозяйством относительно просто
Что бы получить краткую сводку после выполненного бекапа, достаточно в команду внести опцию –print-statistic
rdiff-backup --print-statistic /source/path /destination/path --------------[ Session statistics ]-------------- StartTime 1345877958.00 (Sat Aug 25 12:59:18 2012) EndTime 1345878004.57 (Sat Aug 25 13:00:04 2012) ElapsedTime 46.57 (46.57 seconds) SourceFiles 33020 SourceFileSize 467469521 (446 MB) MirrorFiles 1 MirrorFileSize 0 (0 bytes) NewFiles 33019 NewFileSize 467469521 (446 MB) DeletedFiles 0 DeletedFileSize 0 (0 bytes) ChangedFiles 1 ChangedSourceSize 0 (0 bytes) ChangedMirrorSize 0 (0 bytes) IncrementFiles 0 IncrementFileSize 0 (0 bytes) TotalDestinationSizeChange 467469521 (446 MB) Errors 0 --------------------------------------------------
Восстановление данных
Что бы восстановить данные, необходимо выполнить команду вида:
rdiff-backup -r now /destination/path /local/path
В результате мы восстановим данные из последнего выполненного бекапа в каталог /local/path.
Поскольку в /destination/path хранится полное дерево того, что мы бекапим, то можно указать для восстановления только определенный файл или каталог, например так:
rdiff-backup -r now /destination/path/some/directory/or/file /local/path
Мейби, глоббинг здесь могет работать, но не проверено.
Чтобы восстановить файлы 5 дневной давности, можно воспользоваться такой командой:
rdiff-backup -r 5D /destination/path/some/directory/or/file /local/path
Можно восстановить и по определенной дате:
rdiff-backup -r 2012-08-05 /destination/path/some/directory/or/file /local/path
, но нужно сначала просмотреть список доступных инкрементов, после чего указать TIMESTAMP того, что Вам нужен:
rdiff-backup -r 2012-08-13T21:51:03+06:00 /destination/path/some/directory/or/file /local/path
Удаляем старое
Естественно, что хранить кучу устаревшего файла 5 лет нет смысла. Rdiff-backup умеет и прибирать за собой. Давайте удалим бекапы старше, чем 16 недель:
rdiff-backup --remove-older-than 16W /destination/path
Удаление старых бекапов происходит таким образом, что если в тот день имеется только инкремент полного бекапа, то останется все предыдущие до момента создания этого инкремента бекапы вплоть до предыдущего полного бекапа. Таким образом гарантируется, что удаление старых бекапов не приведет к неработоспособности оставшихся инкрементов.
С rsync
Поскольку rdiff используется для работы rsync, то естественно он умеет делать бекапы на удаленный хост. Команда для создания бекапов в этом случае выглядит примерно так:
rdiff-backup /source/path user@backup-host::/destination/path
Аналогично можно проводить восстановление данных и просмотр уже сделанных бекапов. Для автоматизирования создания бекапов и удаления старых необходимо будет сделать очевидные вещи:
- настроить ssh-авторизацию по ключу
- наваять простенький скрипт
- добавить задание в cron
Типа, чот такое.
#!/bin/bash # backup script with using rdiff-backup if ping -c 1 -s 1 -W 1 backup-server then rdiff-backup /source/path user@backup-server::/destination/path rdiff-backup --remove-older-than 16W user@$backup-server::/destination/path fi
При необходимости пишем логи, настраиваем отправку отчетов по электронной почте.