Intereting Posts
Использовать виртуальный хост apache для перенаправления субдомена на внутренний IP-адрес, сохраняющий переданный порт что означает пунктирная линия на `экране` мультиплексированного терминала? Отменить фиксацию и передать их ветке? Случайный вставлен в Majaro Использовать параметр загрузки для выполнения определенных действий после загрузки Моему сценарию нужен доступ для записи в / dev / sdX. Как избежать запуска его как root? iptables: нет цепочки / цели / соответствия этим именем Как решить схему разделения? Драйверы Blacklisting Как сохранить соединение ftp Возможно ли резервное копирование и восстановление пользовательских действий Thunar? Как конвертировать все файлы из gzip в xz на лету (и рекурсивно)? Используйте sed, чтобы найти целое слово и заменить Это правильный способ проверить, объявлен ли параметр? Использовать переменную и новую строку в BSD sed?

Переместить только при проверке?

По какой-то причине копирование файлов с моего телефона через интерфейс плавкого предохранителя MTP иногда приводит к поврежденным файлам, но их последние несколько байтов. Я хочу удалить каждый файл при успешной передаче, но не удалять их, если возникла проблема. Команда mv не имеет опции --verify . Я мог бы написать короткий скрипт, который копирует, проверяет и удаляет, но мне интересно, есть ли более элегантная существующая команда, которая может справиться с этим?

В качестве бонуса было бы неплохо указать совпадение контрольной суммы и успех с помощью внешней команды проверки, в данном случае jpeginfo -c . Я думаю, что короткие чтения являются случайными вхождениями, но я действительно не тестировал, что плохой файл на самом деле не кэшируется таким образом (иначе иначе будет читаться неправильно одинаково дважды). Итак, что-то вроде mv --verify --verifywith='jpeginfo -c' было бы идеально (где jpeginfo -c – это команда, которая проверяет файлы JPEG на правильность и которая, как я знаю, вернет ошибку для этих конкретных усеченных файлов).

rsync может сделать это с помощью --remove-source-files . От man rsync (внимание мое):

Это говорит rsync удалить со стороны отправки файлы (что означает не-каталоги), которые являются частью передачи и были успешно дублированы на принимающей стороне .

Я не уверен, как он проверяет успешное дублирование, кроме того, что он не удалит их, если во время процесса произошла ошибка. Вполне возможно, что это все, что он делает.

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

Поскольку вы упоминаете MTP и телефон, я собираюсь предположить, что вы используете Android. Если вы рассмотрите альтернативный интерфейс FUSE, вы можете попробовать adbfs .