将目录从 ext3 复制到 FAT32,忽略符号链接、管道等

将目录从 ext3 复制到 FAT32,忽略符号链接、管道等

我正在尝试编写一个 shell 脚本,在其中以递归方式将目录复制到 USB 记忆棒。我需要复制操作的返回值以进行错误检查。我试过

cp -a /var/mydir /media/usbdrive

cp -r /var/mydir /media/usbdrive

以及其他一些,但问题是我总是收到如下错误:

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

虽然这些是警告并且复制操作继续,但我从操作中返回了一个不成功的错误代码,这弄乱了我的脚本中的错误处理。我如何才能递归复制并忽略 fifo、符号链接和其他在 FAT32 文件系统上无效的实体?

答案1

您应该能够使用find命令执行此操作。该-type选项允许您限制找到的文件类型,因此您可以忽略符号链接和管道等,并且该-exec选项允许您对找到的每个文件运行一个命令。

首先在 USB 上创建所有目录:

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

然后复制所有纯文本文件:

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

相关内容