Среда: Ubuntu 16.04 в Azure
Я пытаюсь сделать резервную копию определенных папок. Я использую простую команду tar без сжатия. Моя цель - хранить файл в течение месяца, добавляя изменения постепенно один раз в день, затем сжимать tar и запускать новый один раз в месяц.
Моя проблема заключается в следующем: локальные резервные копии не имеют для меня смысла, потому что, если локальная файловая система умирает или возникает ошибка, умирают как исходная, так и резервная копия. (кажется очевидным, но я заявляю для ясности)
Я попытался выполнить резервное копирование в отдельный контейнер хранилища Azure с помощью SMB-соединения, а также на другой идентичный компьютер Ubuntu через NFS.
Я попробовал второй вариант, потому что прочитал эту статью: инкрементное резервное копирование tar создает резервную копию всего, каждый раз, когда используется в каталоге Dropbox
Итак, что бы я ни делал, tar игнорирует флаг -u при выполнении следующей команды:
cd /savelocation; sudo /bin/tar --ignore-failed-read -up -f /savelocation/backupfoldername.tar /var/www/foldertobackup
Вместо того, чтобы получить несколько дополнительных мегабайт, которые будут представлять добавленные или измененные файлы, я получаю файл размером 44 ГБ, что в два раза больше оригинала.
Любые мысли или вопросы приветствуются.
Я провел еще несколько исследований относительно --listed-incremental. Большинство статей в лучшем случае сбивали с толку, не имея достаточно подробностей для полного понимания. Затем я нашел следующую статью, в которой очень четко объяснялось:
http://paulwhippconsulting.com/blog/using-tar-for-full-and-incremental-backups/
Единственное, о чем я хотел бы добавить, о чем я спросил автора, - это то, что если вы тестируете небольшую цель, может показаться, что вы не получите приличного инкремента, если сделаете это сразу, поскольку есть значительный накладные расходы в инкрементальном размере. Однако, как только вы примените его к большим резервным копиям, он будет работать отлично.
Вместо резервного копирования в мою отдельную учетную запись хранения Azure, подключенную через SMB, я сделал второй идентичный сервер и подключил его через nfs. Он намного более стабилен, и нет различий в файловых системах, которые могут что-то испортить. Я настраиваю сценарий, который будет архивировать каждую резервную копию, а затем копировать ее в контейнер хранилища Azure после завершения каждой резервной копии. Это экономит время обработки и экономит энергию на производственном сервере за счет выполнения zip-архивации на сервере резервного копирования. Я надеюсь, что это поможет кому-то.
По моим тестам здесь.
Первый: Я считаю, что cd
не требуется для выполнения команды.
Второй: вы должны использовать --listed-incremental
по вашей команде.
-g, --listed-incremental ФАЙЛ
обрабатывать новое инкрементное резервное копирование в формате GNU
Кажется, что --listed-incremental
, работает, только если у вас уже есть файл TAR, согласно моим тестам и с одним из наблюдений, перечисленных в комментариях.
$ ll folder
total 8,0K
-rw-rw-r-- 1 ivanleon ivanleon 9 Jun 6 11:32 file1
-rw-rw-r-- 1 ivanleon ivanleon 9 Jun 6 11:32 file2
-rw-rw-r-- 1 ivanleon ivanleon 0 Jun 6 11:27 file3
$ sudo /bin/tar -cvf folder.tar folder
folder/
folder/file2
folder/file3
folder/file1
$ tar tvf folder.tar
drwxrwxr-x ivanleon/ivanleon 0 2017-06-06 11:27 folder/
-rw-rw-r-- ivanleon/ivanleon 0 2017-06-06 11:27 folder/file2
-rw-rw-r-- ivanleon/ivanleon 0 2017-06-06 11:27 folder/file3
-rw-rw-r-- ivanleon/ivanleon 0 2017-06-06 11:27 folder/file1
$ echo "newdata1" >> folder/file1
$ echo "newdata2" >> folder/file2
$ sudo /bin/tar -cvf --listed-incremental folder.tar folder
folder.tar
folder/
folder/file2
folder/file3
folder/file1
$ tar -tvf folder.tar
drwxrwxr-x ivanleon/ivanleon 0 2017-06-06 11:27 folder/
-rw-rw-r-- ivanleon/ivanleon 0 2017-06-06 11:27 folder/file2
-rw-rw-r-- ivanleon/ivanleon 0 2017-06-06 11:27 folder/file3
-rw-rw-r-- ivanleon/ivanleon 0 2017-06-06 11:27 folder/file1