Среда: 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 ГБ, что вдвое превышает размер оригинала.
Любые мысли или вопросы приветствуются.
Согласно моим тестам здесь.
Первое: Я считаю, что компакт-диск
не нужен для выполнения команды.
Второе: вы должны использовать - list-incremental
в своей команде.
-g, --listed-incremental ФАЙЛ
обрабатывать новое инкрементное резервное копирование в формате GNU
Похоже, что - list-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
Я провел еще несколько исследований по поводу --listed-incremental. Большинство статей в лучшем случае сбивали с толку, не имея достаточно подробностей для полного понимания. Затем я нашел следующую статью, в которой очень четко объяснялось:
http://paulwhippconsulting.com/blog/using-tar-for-full-and-incremental-backups/
Единственное, что я бы добавил: Я спросил автора о том, что если вы тестируете небольшую цель, может показаться, что вы не получите приличного инкремента, если сделаете это сразу, поскольку в инкрементальном режиме есть значительные накладные расходы. Однако, как только вы реализуете его для более крупных резервных копий, он будет работать отлично.
Вместо резервного копирования в мою отдельную учетную запись хранения Azure, подключенную через SMB,Сделал второй такой же сервер и подключил через nfs. Он намного более стабилен, и нет различий в файловых системах, которые могут что-то испортить. Я настраиваю сценарий, который будет архивировать каждую резервную копию, а затем копировать ее в контейнер хранилища Azure после завершения каждой резервной копии. Это экономит время обработки и энергию на производственном сервере, выполняя zip на сервере резервного копирования. Надеюсь, это кому-то поможет.