Проверьте правильность скопированных файлов

Спасибо также за отправку отчета об ошибке [1]:)

Обходной путь, пока это не будет исправлено, вызывает

dbus-send --system --print-reply --dest=org.freedesktop.UDisks /org/freedesktop/UDisks org.freedesktop.UDisks.EnumerateDevices

перед запуском QL.

[1] https://code.google.com/p/quodlibet/issues/detail?id=1213

14
задан 16.11.2019, 06:41

5 ответов

В «если все было скопировано правильно», я использую модифицированный cp (или mv), который включает контрольную сумму (опционально хранится в xattr, следовательно, он должен быть рассчитан только один раз для источника) http: / /sourceforge.net/projects/crcsum/

0
ответ дан 16.11.2019, 06:42
  • 1
    Хотя Ваш ответ на 100% корректен, для начинающего пользователя также почти невозможно реализовать. Поэтому редактирование Ваш ответ, и включает шаги в то, как загрузить, скомпилируйте, установите и удалите crccp в Вашем ответе!;-), можно всегда оставлять ссылку внутри в нижней части ответа как источник для материала... – Mosh 16.11.2019, 06:42

Ситуация, о которой вы говорите, слишком сложна. Хотя вы можете написать скрипт для расчета MD5 всех файлов, которые вы хотите скопировать, а затем сравнить их с скопированными:

[ 117] Если вы хотите что-то простое и быстрое (оно не будет работать в очень сложных сценариях), вы можете использовать Meld

sudo apt-get install meld
0
ответ дан 16.11.2019, 06:42

Это выглядит как идеальная задача для rsync . Rsync сравнивает и копирует различия.

Утилита rsync впервые пришла мне в голову, когда я увидела ваш вопрос. Выполнение чего-либо подобного приведенному ниже может быстро показать, какие файлы находятся в каталоге a, но не в b:

$ rsync -rcnv a/* b/

-r will recurse into the directories
-c will compare based on file checksum
-n will run it as a "dry run" and make no changes, but just print out the files 
   that would be updated
-v will print the output to stdout verbosely

Это хороший вариант, поскольку вы также можете сравнить содержимое файлов, чтобы убедиться, что они совпадают. Дельта-алгоритм rsync оптимизирован для этого типа использования. Затем, если вы хотите, чтобы b соответствовало содержимому a, вы можете просто удалить опцию -n, чтобы выполнить фактическую синхронизацию.

Некоторые связанные вопросы:

0
ответ дан 16.11.2019, 06:43
  • 1
    @JustinForce Используя размер? Несомненно, различный размер удостоверяются, что файл не является точно тем же, но rsync очень универсален, это может дополнительно доверять метаданным (как время), чтобы не перечитывать все файлы. При копировании через сеть это вычисляет прокручивающийся хеш для прекрасного обнаружения общих частей, чтобы не передавать их, но на локальном диске хешами по умолчанию don' t играют эту роль (если используется вообще). Можно даже попросить, чтобы он положил, что короче место назначения уже имеет корректное содержание и просто нуждается в добавлении, хотя let' s остаются по теме. – Alderete 16.11.2019, 06:43
  • 2
    rsync является определенно инструментом для этого задания, но этого doesn' t сравнивают и копируют diffs по сути. Это сравнивает файлы с помощью размеров и хешей. –  16.11.2019, 06:44

Я использую hashdeep для проверки резервных копий / восстановления и иногда для проверки повреждения файловой системы в RAID.

Скорость зависит от того, какие хэш-функции вы используете (некоторые загружают больше ресурсов процессора, чем другие), а также от скорости чтения ваших дисков. В моей системе hashdeep может обрабатывать или проверять около 1 ТБ / час со скоростью чтения md5 и 300 МБ / с.


Пример расчета контрольных сумм и сохранения их в файле:

cd my-data
hashdeep -rlc md5 . > ~/checksums.txt

Параметры:

  • r - рекурсивный
  • [114 ] - использовать относительные пути
  • c - указать хеш-функцию
  • . - рекурсивно, начиная с текущего каталога
  • > - перенаправить вывод в указанный файл

См. Справочную страницу .


Пример проверки контрольных сумм и распечатки списка различий:

$ cd /mnt/my-backup
$ hashdeep -ravvl -k ~/checksums.txt .
hashdeep: Audit passed
          Files matched: 40914
Files partially matched: 0
            Files moved: 0
        New files found: 0
  Known files not found: 0

Параметры:

  • a - аудит (сравните со списком известных контрольных сумм) )
  • v - подробный (чтобы получить список несовпадений, несколько v означает более подробный)
  • k - файл известных хешей
[ 1131] Обратите внимание, что по состоянию на март 2016 года hashdeep представляется заброшенным .

0
ответ дан 16.11.2019, 06:44

Если приложения с графическим интерфейсом, предложенные в Средстве сравнения файлов и каталогов? , не делают этого за вас, попробуйте diff -rq /path/to/one /path/to/other спокойно выполнить поиск по обоим каталогам, регистрируя только различия на экране.

0
ответ дан 16.11.2019, 06:44

Теги

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