1

Я пытаюсь написать сценарий оболочки, в котором я рекурсивно копирую каталог на флешку. Мне нужно возвращаемое значение операции копирования для проверки ошибок. я пробовал

cp -a /var/mydir /media/usbdrive

а также

cp -r /var/mydir /media/usbdrive

а также несколько других, но проблема в том, что я всегда получаю такие ошибки, как:

Cannot create fifo: /path/to/fifo Operation not permitted

Пока это предупреждения, и операция копирования продолжается, я получаю неуспешный код ошибки, возвращаемый операцией, которая портит обработку ошибок в моем сценарии. Как я могу рекурсивно копировать и игнорировать fifo, символические ссылки и другие объекты, которые недопустимы в файловой системе FAT32?

1 ответ1

2

Вы должны быть в состоянии сделать это с помощью команды find . Опция -type позволяет вам ограничивать типы найденных файлов, поэтому вы можете игнорировать символические ссылки, каналы и т.д., А опция -exec позволяет запускать команду для каждого из найденных файлов.

Сначала создайте все каталоги на USB-накопителе:

cd /var/mydir
find * -type d -exec mkdir /media/usbdrive/{} \;

Затем скопируйте все простые файлы:

cd /var/mydir
find . -type f -exec cp {} /media/usbdrive/{} \;

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .