Благодаря комментариям, я смог решить эту проблему. Это отредактированная версия моего предыдущего ответа, потому что он был признан недостаточным и вызвал больше вопросов, чем ответил.
Поэтому здесь я пытаюсь описать каждую проблему, которая привела к самой проблеме и как я решил ее.
Попытка №1: - Неправильный синтаксис mv
?
Из скрипта следующая строка ничего не сделала:
find "/var/www/analysis_xyz/" -name '*log.gz' -exec mv -f {} "/media/pi/MOBIDICDATA" \;
Я не был уверен, смогу ли я использовать стандартные параметры mv
при вызове его из -exec
, но я добавил параметр -f
для перезаписи существующих файлов в целевом каталоге в любом случае.
Добавив в сценарий set -x
как было предложено, я получил сообщение об ошибке, в котором говорилось, что с аргументами команды mv
что-то не так. Поэтому я удалил параметр -f
. Без успеха. Погуглив немного дальше и увидев несколько примеров, которые все использовали параметр -t
, я добавил его. Опять же, безуспешно, вместо этого я получил сообщение об ошибке, в котором говорится, что ожидается каталог, который я неправильно истолковал (извините, немного нуба относительно сценариев оболочки). В этот момент у меня был следующий синтаксис, который позже оказался абсолютно правильным и работающим:
find /var/www/analysis_xyz/ -name '*log.gz' -exec mv {} -t /media/pi/MOBIDICDATA \;
(обратите внимание на перемещенный {}
). Но на данный момент проблема все еще не решена, и я даже не был уверен, были ли ее части -f
и -t
.
Попытка № 2: - Я пытаюсь записать на USB-флешку только для чтения?
Как вы могли заметить, целевой папкой является /media/pi/…
Так что вы, возможно, знаете, что я использую Raspberry Pi и использую Raspbian. USB-накопитель, на который я хотел записать данные, автоматически монтируется в эту папку (при условии, что устройство называется MOBIDICDATA
. Автоматическое монтирование монтирует устройство только для чтения (и в этот момент я понятия не имел, почему). Это привело к выполнению процесса, но файлы не были скопированы, и появилось сообщение об ошибке, в котором говорилось, что устройство доступно только для чтения.
Я решил не полагаться на автоматическое монтирование и сам монтировать устройство при перезагрузке в другое место. Новая цель была /mobidicdata
. Устройство было успешно установлено, но по какой-то причине все еще было доступно только для чтения.
Попытка № 3: - Коротка ли жизнь, чтобы безопасно удалить USB?
Раньше я буквально убивал 2 USB-устройства, безопасно удаляя их с ПК с Windows, поэтому я решил больше этого не делать, поскольку я никогда не убивал устройство, просто вытаскивая его. Мало ли я знал, что, например, USB-флешки, которые просто извлекаются, всегда монтируются только для чтения на большинстве систем, отличных от Windows; что имеет смысл, поскольку файловая система может быть повреждена и привести к другим проблемам. Узнав об этом, я благополучно извлек USB-устройство, установил его, и теперь оно было ч / б.
Итак, протестируйте снова с записывающим устройством и следующим синтаксисом:
find /var/www/analysis_xyz/ -name '*log.gz' -exec mv {} -t /mobidicdata \;
... который работал.
Для меня это было немного Одисее.
Резюме
Да, параметр -t
/-f
не был проблемой, как упоминалось ранее. Это был скорее кластер с несколькими проблемами, который я уже должен был описать более подробно ранее.
Я надеюсь пролить некоторый свет на все это и то, что я знаю с этого момента и буду делать в будущем:
- Вы определенно должны безопасно удалить USB
К сожалению, я не могу полностью воспроизвести проблему выше. В этом случае я мог бы указать точные сообщения об ошибках. Но я все еще думаю, что это дает немного больше понимания того, что произошло и что было сделано.