Можно изменить строку хижины на
#!/bin/bash -e
После любой ошибки остановится сценарий.
Просто добавьте /dev
на список файлов для архивации:
ssh -n <hostname> sudo tar -cpvzf - --one-file-system / /dev > Bak.tar.gz
--one-file-system
только предотвращает рекурсивный вызов в каталоги в различных файловых системах. Можно все еще перечислить файлы/каталоги в различных файловых системах непосредственно как аргументы tar.
Вы могли, вероятно, просто добавить его к путям, которые будут включены.
tar -cf - --one-file-system / /dev/
Однако это обычно не, что Вы действительно хотите вообще как динамическое /dev
включал бы слишком много абсолютно неправильных или несоответствующих узлов устройства.
Лучший путь (лучше в смысле фактического получения полной копии исходной корневой файловой системы, включая файлы, скрытые другим монтированием), чтобы сделать это, состоит в том, чтобы заставить других смонтироваться файловой системы, которая не затруднена подмонтированием, и tar
это.
Тем путем Вы добираетесь /dev/
(и все остальное), который на самом деле хранится в корневой файловой системе. Это должно обычно включать только стандартный набор /dev
узлы, который был первоначально создан во время установки и только нуждался во время начальной загрузки до системы, настраивают динамическое /dev/
сверху его.
mkdir /mnt/root
mount --bind / /mnt/root
cd /mnt/root
tar -cpvzf - .
cd /
umount /mnt/root
Как mount
состояния страницы справочника, связывание монтирует, что вызов присоединяет только (часть) единственную файловую систему, не возможное подмонтирование. Вот почему --one-file-system
больше не необходим: под этой структурой нет никаких других файловых систем.
ssh host 'mkdir /mnt/root;mount --bind / /mnt/root;cd /mnt/root;tar ......' > piped.tar
но обычно Вы только что поместили это в сценарий, который Вы храните и выполняете на сервере. Особенно как необходимо делать, некоторые дополнительные проверки (делает точку монтирования, уже существуют, уже это смонтированный, любые ошибки при выполнении tar и т.д. и т.д.). Трубопроводы несмотря на другие команды пока tar
единственная команда, на самом деле производящая что-либо к stdout.
– frostschutz
04.12.2013, 23:22