Intereting Posts
(/ etc / sysconfig / iptables) «Ручная настройка этого файла не рекомендуется». Почему? указать геометрию нового окна gnuplot в lxde Сценарий Bash для произвольного расширения имени файла Разрешить доступ в Интернет в общедоступную подсеть OpenBSD NFS-сервер с Linux NFS-клиентами – ограничение размера файла? Переустановка Ubuntu из Windows? Как получить мое приложение в списке приложений? как cp -f отличается от cp -remove-destination? Ошибка компиляции ядра с помощью руководства, представленного на веб-сайте Raspberry Pi Запуск скрипта на изображении облачной федерации при загрузке Понимание формата прошедшего времени ps для длительных процессов Автоматическая сборка ядра linux Как восстановить потерянную таблицу разделов gpt? Является ли реализация Linux конфигурации «переменной» ARG_MAX отличной от других системных переменных и совместима ли она с POSIX? Не удалось прочитать файл по какой-либо причине

Значение пересечения границ файловой системы, – однофайловая система и т. Д.

Я планирую использовать rsnapshot для резервного копирования всей моей системы Linux, хотя меня смущает опция -x (то же самое из one_fs в rsnapshot.conf ). На странице руководства написано:

-x одна файловая система, не пересекайте разделы в каждой точке резервного копирования

Я понимаю, что это не конкретная опция rsnapshot, так как эта функция также поддерживает команды rsync, cp, tar и другие команды.

Имеются ли границы файловой системы для разных разделов? Различные точки крепления? И что значит «не перекрещивать» их?

Вернемся к моему делу, я прочитал много людей, предлагающих использовать -x с rsnapshot, но мне интересно, не сделает ли это компрометирование полноты моей резервной копии. Я хочу сделать резервную копию всех под / , включая /boot и /home , которые находятся на выделенных разделах одного и того же диска, и в то же время я не хочу создавать резервные копии файлов и каталогов, не принадлежащих строго моей системе, например /mnt , /media и т. д.

Выполнение команды mount в моей системе дает следующий результат. Pratically, используя rsnapshot -x , что будет включено и что будет не rsnapshot -x ?

 /dev/sda7 on / type ext4 (rw,errors=remount-ro) proc on /proc type proc (rw,noexec,nosuid,nodev) sysfs on /sys type sysfs (rw,noexec,nosuid,nodev) none on /sys/fs/fuse/connections type fusectl (rw) none on /sys/kernel/debug type debugfs (rw) none on /sys/kernel/security type securityfs (rw) udev on /dev type devtmpfs (rw,mode=0755) devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620) tmpfs on /tmp type tmpfs (rw,noexec,nosuid) tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755) none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880) none on /run/shm type tmpfs (rw,nosuid,nodev) /dev/sda6 on /boot type ext3 (rw) /dev/sda8 on /home type ext4 (rw) binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev) gvfs-fuse-daemon on /home/myuser/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=myuser) 

«Не перекрещивать границы файловой системы» означает «не смотрите внутрь точек монтирования». Границей между файловыми системами является точка монтирования. Эффективно это означает «действовать только на указанный раздел», за исключением того, что не все файловые системы находятся на разделе. См. Какие точки монтирования существуют в типичной системе Linux?

Когда вы делаете резервную копию, вам следует избегать нескольких файловых систем, в частности:

  • удаленные файловые системы (NFS, Samba, SSHFS, …);
  • файловые системы, содержимое которых генерируется «на лету» из данных времени выполнения ( /proc , /sys , …);
  • файловые системы, которые представляют собой представление другой части дерева каталогов (bindfs, avfs, …);
  • в-памяти, содержащие данные, которые действительны только до следующей перезагрузки ( /tmp , /dev/shm , …);
  • которые могут или не могут присутствовать в любой момент времени и не являются частью самой системы.

Файловые системы для резервного копирования – это только те, которые соответствуют хранению на диске. Во многих системах имеется только одна такая файловая система, установленная в корневом каталоге / . Вы можете определить, какие файловые системы соответствуют хранению на диске, потому что их источник (первый столбец под названием «Файловая система» выхода df , первый столбец перед выходом на выходе) – это тома диска (раздел в стиле ПК, такой как /dev/sda1 , логический том LVM, такой как /dev/mapper/mygroup-mylogicalvolume , …).

Есть несколько тонкостей, которые могут определять, какие файловые системы выполнять резервное копирование сложнее, чем просто смотреть на источник, чтобы узнать, находится ли он на диске:

  • Съемные тома не должны копироваться, даже если они находятся на диске.
  • Linux позволяет устанавливать одну и ту же файловую систему (или ее части) в нескольких местах, с mount --bind ; только один из них должен быть скопирован.
  • Трудно перечислить все тома на диске: есть зашифрованные тома, распределенные объемы хранения и т. Д.

В вашей системе файловые системы для резервного копирования /dev/sda7 монтируются на / , /dev/sda6 смонтированные на /boot и /dev/sda8 смонтированные в /home . Поэтому вы должны указать rsnapshot для резервного копирования этих трех каталогов. Вы должны почти всегда использовать параметр -x с rsnapshot.

Чтобы упростить ситуацию, давайте просто рассмотрим два раздела. Предположим, что текущее mount фактически произвело следующий вывод:

 /dev/sda1 on / type ext4 (rw,errors=remount-ro) /dev/sda2 on /home type ext4 (rw) 

Это, конечно, совершенно нереалистично ( /dev не будет заселен, много вещей зависит от sysfs и procfs и т. Д.). Давайте просто проигнорируем это.

Пересечение границы файловой системы означает переход в каталог, в котором базовая файловая система (которая обычно соответствует базовому разделу) отличается. Обычно, когда кто-то говорит о пересечении границы файловой системы, они говорят об этом в контексте пересечения дерева каталогов либо вниз, либо вверх.

В качестве примера того, что я имею в виду, возьмите git . Чтобы выяснить, является ли каталог репозиторием Git, git сначала проверит, есть ли в текущем рабочем каталоге папка с именем «.git». Если есть, это репозиторий Git. Если этого не произойдет, git выполнит такую ​​же проверку у родителя текущего каталога и т. Д. И т. Д. По умолчанию Git будет проверять это так, вплоть до границы файловой системы (или как только он достигнет / ), после чего он откажется и предположит, что текущий рабочий каталог не является, по сути, репозиторием Git.

Скажем, вы запустили git status в ~/Desktop . Git проверяет, есть ли каталог ~/Desktop/.git … nope. Теперь Git проверит родительский каталог: есть ли ~/.git ? Неа. Вот где границы файловой системы вступают в игру: поскольку /home – это отдельный раздел, вместо проверки на /home/.git git /home/.git , выведет предупреждение на консоль и предположим, что текущий рабочий каталог не является репозиторий Git. Он отказался перекрещивать границы файловой системы.