Как сделать бэкап всей системы в centos
Хотелось бы рассказать как можно было бы сделать бэкап полной системы на примере centOS 7.
Если вам нужно создать backup всей вашей системы, то необходимо выполнить команду:
# tar cvpzf /my_backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/my_backup.tgz --exclude=/mnt --exclude=/sys /
Этой команды хватит чтобы создать бекап. Поговорим о том что же в этой команде написано:
- Запускаем команду от рута и создадим так званый тарбол (утилита tar с опцией «c») и заархивируем его в архив gz (опция «z»).
- С опцией «—exclude» исключим из нашего архива все системные папки и файлы устройств и наш архив (чтобы он рекурсивно не начал запаковывать сам в себя).
- По окончанию, получим в корневой директории наш сжатый архив системы в my_backup.tgz файле.
Бекап мы то сделали, но наверное нужно еще и научится разворачивать его. Как это сделать? Ну, для начала, нужна будет всё-таки работающая система. Можно выполнить установку системы или просто загрузиться с Live CD/DVD). Я, буду думать что у всех есть уже готовая установленная и готова к работе система на которой хотим сделать развертку my_backup архива.
Для этого необходимо выполнить команду:
ВСЕ! ГОТОВО! На этом тема «как сделать бэкап всей системы в centos» завершена.
11 thoughts on “ как сделать бэкап всей системы в centos ”
# tar xvpfz /backup.tgz -C/
tar (child): /backup.tgz: Функция open завершилась с ошибкой: Нет такого файла или каталога
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now вот такую штуку мне пишет, когда пытаюсь разархивировать
У Вас:
# tar xvpfz /backup.tgz -C/ Это ошибка, последний слеш слит с командой. Нужно:
# tar xvpfz /backup.tgz -C / Нужно быть внимательней 😉
Просто имя файла указано не верно. При создании файл назывался my_backup.tgz, а при распаковке просто backup.tgz =)
Логический бэкап используется в тех случаях, когда необходимо одноразово сделать полную копию базы или в повседневной эксплуатации для создания копии не потребуется много времени или места. Когда же выгрузка баз занимает много времени, следует обратить внимание на физическое архивирование.
Exiting with failure status due to previous errors
Как “сохранить всю систему” в Linux (бэкап системы в CentOS)
Когда у вас на Linux-сервере (в моем случае Linux CentOS) скапливается большое количество информации (и ее жалко потерять )))) ) и переустанавливать все слишком долго, то один из вариантов (на компьютере вообще все можно сделать несколькими разными способами) такого сохранения данных, это полное (все без разбора) сохранение всех данных и их архивирование. Для этого необходимо выполнить команду:
tar cvpzf /backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --exclude=/mnt --exclude=/sys /
tar - сам архиватор (утилита для создания архива) -c --create — создание нового архива -v --verbose — подробный режим, вывод текущего действия -p --same-permissions — сохранять права -z --gzip — перенаправить вывод в команду gzip -f --file — указать имя архива -- exclude=/backup.tgz исключить данный файл из бекапа (чтобы не зациклить процесс и не начать запаковывать файл архива сам в себя). Точно также можно исключить из процесса упаковки и любую папку.
Архив создан и теперь его надо восстановить.
-x --extract Извлечь файлы из архива -v --verbose Выводить подробную информацию процесса -p --same-permissions Сохранить все права доступа к файлу -f --file Вывести результат в файл (или на устройство) file -z --gzip Перенаправить вывод в команду gzip -C dir --directory=DIR Сменить директорию перед выполнением операции на dir (в данном случае директорией является "корень")
Вот, в принципе и весь процесс. Следует помнить, что всё это выполняется “из под рута” и в случае восстановления системы при помощи Live-cd придется устанавливать еще и “загрузчик” системы.
Как делаю я: ставлю систему, а потом делаю разархивацию поверх “чистой” системы.
How to backup a full Centos Server?
I switched a few weeks ago from a dedicated server to a VPS. Now that everything is working well on the VPS I would like to shutdown the dedicated server and close my account with the hosting company. For peace of mind and in order to be more safe I would like to do a full backup of the server before stopping it. The best would be a backup that I could browse if I find that I need a something in the backup. What would be the best solution from command line? Update : Medium : Network
5 Answers 5
The best tool to use for this is probably dump, which is a standard linux tool and will give you the whole filesystem. I would do something like this:
/sbin/dump -0uan -f - / | gzip -2 | ssh -c blowfish user@backupserver.example.com dd of=/backup/server-full-backup-`date '+%d-%B-%Y'`.dump.gz
This will do a file system dump of / (make sure you don’t need to dump any other mounts!), compress it with gzip and ssh it to a remote server (backupserver.example.com), storing it in /backup/. If you later need to browse the backup you use restore:
Another option, if you don’t have access to dump is to use tar and do something like
tar -zcvpf /backup/full-backup-`date '+%d-%B-%Y'`.tar.gz --directory / --exclude=mnt --exclude=proc --exclude=tmp .
But tar does not handle changes in the file system as well.
Dump is a literal copy of the filesystem, with everything in there. As long as you don’t have more than one (check by running mount ) that’s all you need.
@pehrs how do you restore using the .gz file? Can you please add that in your answer. It’d really help.
If you want to backup from Linux to Linux I wouldn’t use dump, because it’s inconvenient when you need to access something inside the backup file. Just using rsync over SSH to do a full system backup should be fine in most cases:
rsync -aAXv --delete-after --exclude= / user@server:backup-folder
This will keep everything important and let you browse the backup without additional steps.
You may want to add rsync’s —delete option if you are running this multiple times to the same backup folder. In this case make sure that the source path does not end with /* , or this option will only have effect on the files inside the subdirectories of the source directory, but it will have no effect on the files residing directly inside the source directory.
What medium are you going to be storing the backup on? If you’re backing up over the network I would sshfs/nfs mount my destination on the source server and run something like:
tar cvjf ///source-030810-full.tar.bz2 /* --exclude=/proc --exclude=/dev --exclude=/sys --exclude=/tmp --exclude=/
Note that has not been tested, just my general thinking you may want to exclude more or less than that.
I use the command described above from pehrs, but modified for ftp use. Crontab sample:
30 3 1 * * sudo /sbin/dump -0uan -f server-full-backup-root-`date '+%d-%B-%Y'`.dump / && gzip -1 //server-full-backup-root-`date '+%d-%B-%Y'`.dump 50 * * * * lftp -f upload.x
upload.x contains ftp credentials and rules for upload:
open -u user,password -p 21 192.168.1.1 mirror -c -e -R / / exit
Note 1: lftp may cause high CPU usage when destination is unreachable trying to reconnect. Because many hosting VPS’s may be reset in such cases, I suggest to monitor CPU load to kill lftp process preventing your server shutting down by the host owner. An example for load average >1.33 for processes lftp (and dropbox). Unfortunately, I do not remember the source of initial code, thanks to somebody:
Crontab */5 * * * * /home/cms/cron/loadmon.sh
#!/bin/bash FROM_EMAIL_ADDRESS=cms trigger=1.33 load=`cat /proc/loadavg | awk ''` response=`echo | awk -v T=$trigger -v L=$load 'BEGIN T)< print "greater">>'` if [[ $response = "greater" ]] then killall dropbox lftp nice -n 19 sh /cms/.dropbox-dist/dropboxd sar -q | mailx -s "High load on server - [ $load ]" r***s@gmail.com fi
Note 2: dump utility may not work on OpenVZ VPS or some other virtual servers.