Простое решение для резервного копирования для защиты от битового гниения (или проверки)

С zsh :

isascii() [[ $(file -b --mime-encoding - < ${1-$REPLY}) = us-ascii ]]
zmodload zsh/stat
zstat -n +size -- **/*(D.L+1+isascii)

Разбито:

  • ** / * рекурсивное подстановка, функция, представленная zsh в начале 90-х и позже скопированная некоторыми другими оболочками например ksh93 , fish , bash , yash и tcsh .
  • (...) , квалификатор glob : еще одна функция 90-х, но все еще уникальная для zsh на сегодняшний день. Позволяет дополнительно указать, какие файлы будут включены в глобус на основе метаданных файла, или изменить развернутое значение. Здесь:
    • D : включить D из (скрытых) файлов
    • . : включать только обычные файлы
    • L + 1 : беспокоиться только о файлах размером более 1 байта (иначе файл ничего о них вам не скажет)
    • + isascii : вызывает команду isascii для каждого совпадающего файла, чтобы решить, включать ли этот файл.
  • isascii определяется как функция, которая вызывает файл в $ REPLY (именно так имена файлов передаются для функций, вызываемых квалификаторами glob, функции могут изменять его или возвращать другие файлы в массиве $ reply ). Мы используем здесь $ {1- $ REPLY} , поэтому мы также можем использовать эту функцию для файла, указанного в качестве аргумента, и не изменять $ REPLY , просто возвращаем решение через статус выхода.

    С -b и - mime-encoding , файл (по крайней мере, реализация из libmagic ) выводит только предполагаемые кодирование.Это намного надежнее, чем вызов grep ASCII на выходе файла the-file , поскольку ASCII может встречаться там в путь к файлу или другая информация, извлеченная из файла.

3
21.05.2018, 15:33
2 ответа

Deberías echar un vistazo a bup

Very efficient backup system based on the git packfile format, providing fast incremental saves and global deduplication (among and within files, including virtual machine images).

bup admite bup -fsck(con par2)

verify or repair a bup repository

2
27.01.2020, 21:25

Вот еще один более облегченный вариант (от меня):

https://github.com/laktak/chkbit-py

Он создает хэши, чтобы вы могли проверить целостность данных на основном и резервном носителе.

1
20.09.2020, 20:08

Теги

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