1

У нас есть небольшая проблема с нашими резервными копиями. Наша установка выглядит следующим образом:

  • Мы создаем резервную копию с помощью команды rsync .
  • Резервная копия использует опцию --link-dest , чтобы создавать инкрементные резервные копии с жесткими ссылками на старые резервные копии для всех файлов, которые не были изменены.

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

Тем не менее, в последние две недели резко возросла потребность в хранилище на сервере резервного копирования. Мы подозреваем, что либо что-то идет не так в нашем процессе резервного копирования, или массивные файлы были добавлены (и / или изменены) пользователями на обычном сервере.

Мы хотим проверить (некоторые из) файлы, которые были изменены с момента последнего резервного копирования; это означает проверку всех файлов в одной и той же структуре каталогов с разными индексами (без жестких ссылок).

Как найти эти файлы?

(Ubuntu 12.04 LTS)

1 ответ1

1

Я могу думать о двух способах от макушки головы:

  1. Используйте find и ограничьте количество ссылок

    find -type f -links 1
    

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

  2. Перечислите все иноды и покажите только уникальные

    ls -1i | awk '{print $1}' | sort | uniq -u
    

    Обратите внимание, что выше не будет печатать имена файлов, только inode. Это потому, что i) нам нужно отсортировать / удалить uniq и ii) имена файлов могут содержать странные символы, такие как символы новой строки, которые могут нарушить сортировку / удаление. Если вы уверены, что ваши имена файлов нормальны, вы можете использовать этот подход для печати имен файлов:

    ls -1i | awk '{c[$1]++;l[$1]=$0;} END{for(i in c){if(c[i]==1){print l[i]}}}'
    

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .