'CP - al' создает снимки, чьи жесткие ссылки направлены к новому файлу при редактировании

Различные дистрибутивы делают это по-другому. Вообще говоря, поиск под /etc для места, где тот определенный демон запускается (grep -r ntpd /etc или find /etc -type f -exec grep ntpd {} +), затем посмотрите, как сценарий, который запускает его, получает свои параметры. С другой стороны, консультируйтесь с документацией своего распределения для общих принципов.

Обычно, или существует большой сценарий оболочки или другой конфигурационный файл, который запускает многие сервисы, или существует один сценарий или конфигурационный файл для каждого сервиса. Параметры могут быть даны в том сценарии или получены из переменной, которая установлена в некотором другом конфигурационном файле. Общие местоположения включают /etc/init*, /etc/rc* и /etc/default/*.

11
01.04.2013, 18:42
4 ответа

Это - то, как работают hardlinks. Но, существуют пути вокруг этого:

Несколько опций приходят на ум:

  • Используйте файловую систему с поддержкой файлов копии на записи, как btrfs. Если бы, конечно, были Вы использующий btrfs, то Вы просто использовали бы его собственные снимки... Если Ваша файловая система поддерживает его, можно использовать cp --reflink=always. К сожалению, ext4 не поддерживает это.
  • Только совместно используйте hardlinks через свои снимки, не с оригиналом. Таким образом, в первый раз Вы видите данную версию файла, копируете его в снимок. Но в следующий раз, свяжите его с тем в предыдущем снимке. (Не уверенный, какую программу я раньше делал, это — десятилетие назад — но поиск поднимает dirvish, obnam, storebackup, и rsnapshot),
  • В зависимости от того, как изменяются Ваши файлы, Вы смогли гарантировать, что запись работает временно/переименовывает, используется для изменения их, затем это повредит hardlink — таким образом, версия в снимке останется нетронутой. Это менее безопасно, тем не менее, поскольку ошибки могли повредить Ваш снимок.
  • Возьмите снимки LVM всей файловой системы.

Конечно, существует другая опция — используют надлежащую систему резервного копирования. Большинство всем им может удаться только скопировать измененные файлы.

7
27.01.2020, 19:58
  • 1
    Что Вы рекомендуете как способ создать резервную копию крупной папки? –  Hermann Ingjaldsson 29.03.2013, 21:37
  • 2
    , я думал с помощью rsync к серверу, который имеет cronjob, чтобы сделать CP-al regularly для снимков.. вдоль rsync-луга вперед еще для большего количества копий. Как это звучит? –  Hermann Ingjaldsson 29.03.2013, 21:52
  • 3
    @HermannIngjaldsson хорошо, это зависит от того, как Вы делаете свои резервные копии. Лично, я просто добавил бы его к своей установке Бакулюмов — но я не рекомендую это, если у Вас не будет набора машин, чтобы создать резервную копию или уже знать Бакулюмы. Так, я предполагаю, что предложил бы, чтобы Вы попробовали rsnapshot сначала. –  derobert 29.03.2013, 22:00
  • 4
    rsnapshot хорошо –  developerbmw 20.06.2015, 05:31

То, что Вы ищете, является формой копии на записи, где несколько файлов, которые имеют то же содержание, используют то же пространство на диске, пока один из них не изменяется. Жесткие ссылки только реализуют копию на записи, если приложение, которое делает записи, удаляет файл и создает новый файл тем же именем (который обычно делается путем создания нового файла другим именем, затем перемещения его в место). Приложение, которое Вы используете, очевидно не делает этого: это перезаписывает существующий файл.

Некоторые приложения могут быть настроены для использования заменяющей стратегии. Некоторые приложения используют заменяющую стратегию по умолчанию, но используют стратегию перезаписи, когда они видят файл с несколькими жесткими ссылками, точно чтобы не разорвать жесткие связи. Ваш текущий метод снимка будет работать, если можно настроить приложение для замены вместо перезаписи.

Fl-корова изменяет программы для систематического использования заменяющей стратегии относительно файлов с несколькими жесткими ссылками.

С другой стороны, можно хранить файлы в файловой системе, которая выполняет копию на записи или дедупликацию, или имейте функцию снимка и не беспокойство о жестких ссылках: Btrfs или Zfs. В зависимости от Вашей схемы выделения разделов, с помощью снимков LVM может быть опция.

Моя рекомендация состоит в том, чтобы использовать надлежащий инструмент снимка. Создание надежных резервных копий является удивительно трудным. Вы, вероятно, хотите rsnapshot.

4
27.01.2020, 19:58

Следующее является рубиновым сценарием, что я записал, что переносит "CP - al" и rsync в хороший скрипт, который может быть запущен вручную или через крон. Место назначения может быть локальным или удаленным (через ssh):

Гетто Timemachine

Основной ответ на Ваш вопрос, как упомянуто в предыдущем комментарии, источник должен быть сохранен кроме жестких ссылок. Исключая, примите ежедневное резервное копирование своего корневого каталога:

Источник:

  • /home/flakrat

Место назначения:

  • /data/backup/daily
    • / в понедельник
    • / во вторник
    • / в среду
    • / в четверг
    • ...

Жесткие ссылки создаются рабочим "CP - al" против вчерашнего резервного копирования. Скажите, что это - утро вторника при выполнении его:

cd /data/backup/daily

rm -rf tuesday

cp -al monday tuesday

rsync -a --delete /home/flakrat /data/backup/daily/tuesday/

2
27.01.2020, 19:58

Резервное копирование RDIFF, похоже, делает то, что вы хотите, проверьте это.

Использование rsync Вы должны сначала сделать полную резервную копию не используя жесткие ссылки. Следующее резервное копирование может указывать на предыдущую резервную и жесткую ссылку на него. Таким образом, ваши резервные копии не жестко связаны с вашими рабочими файлами (те, которые вы изменяете). Пример. Если бы моя предыдущая резервная копия была настолько резервной копией папки.01, мой сценарий резервного копирования будет сначала увеличивать папки, переименовая их на одну, так что Backup.01 становится Backup.02. Затем скрипт создает новую пустую папку, называемую Backup.01. Это будет затем RSCYNC новое резервное копирование в новую папку и жесткую ссылку на Backup.02, чтобы только новые файлы возьмут любое пространство в резервной копии. Команда rsync будет выглядеть что-то подобное: RSYNC -RLT Source DestUpPath / Backup.01 --Link-Dest = BackupPath / Backup.02

Итак, вы можете видеть, все жесткие ссылки происходят на пути резервного копирования. Таким образом, вам не нужно беспокоиться о копировании при записи при модификации файлов в исходном пути.

0
27.01.2020, 19:58

Теги

Похожие вопросы