Я пытаюсь записать сценарий оболочки, в котором я рекурсивно копирую каталог в карту с интерфейсом USB. Мне нужно возвращаемое значение операции копии в целях проверки ошибок. Я попробовал
cp -a /var/mydir /media/usbdrive
и
cp -r /var/mydir /media/usbdrive
а также немногие другие, но проблема - то, что я всегда получаю ошибки, такие как:
Cannot create fifo: /path/to/fifo Operation not permitted
Пока это предупреждения, и операция копии продолжается, я возвратил неуспешный код ошибки из операции, которая портит обработку ошибок в моем сценарии. Как я могу скопировать рекурсивно и проигнорировать fifos, символьные ссылки и другие объекты, которые не допустимы в файловой системе FAT32?
Необходимо смочь сделать это использование find
команда. -type
опция позволяет Вам ограничивать виды файлов, которые Вы находите, таким образом, можно проигнорировать символьные ссылки и каналы и т.д., и -exec
опция позволяет Вам выполнять команду для каждого из файлов, которые Вы находите.
Сначала создайте все каталоги на карте с интерфейсом USB:
cd /var/mydir
find * -type d -exec mkdir /media/usbdrive/{} \;
Затем скопируйте все простые файлы:
cd /var/mydir
find . -type f -exec cp {} /media/usbdrive/{} \;