Копировать каталог из ext3 в FAT32, игнорируя символические ссылки, каналы и т. Д.

1932
user17867

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

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
Dave Webb

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

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

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

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

cd /var/mydir find . -type f -exec cp {} /media/usbdrive/{} \; 
Также хорошо работает на USB-накопителе Kingston в этом месте + полезно для пакетного тестирования этих проклятых небольших устройств хранения данных с FAT 32 FS по умолчанию в Linux. Спасибо @ Дэйв Уэбб tuk0z 9 лет назад 0

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