Copie o diretório do ext3 para o FAT32 ignorando links simbólicos, canais etc.

1

Estou tentando escrever um script de shell no qual recursivamente copio um diretório para um pendrive. Preciso do valor de retorno da operação de cópia para fins de verificação de erros. Eu tentei

cp -a /var/mydir /media/usbdrive

e

cp -r /var/mydir /media/usbdrive

bem como alguns outros, mas o problema é que eu sempre recebo erros como:

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

Embora estes sejam avisos e a operação de cópia continue, recebo um código de erro não bem-sucedido retornado da operação que atrapalha o tratamento de erros no meu script. Como posso copiar recursivamente e ignorar fifos, links simbólicos e outras entidades que não são válidas em um sistema de arquivos FAT32?

    
por user17867 13.11.2009 / 12:13

1 resposta

2

Você deve conseguir fazer isso usando o comando find . A opção -type permite restringir os tipos de arquivos que você encontra, portanto, você pode ignorar links simbólicos, etc., e a opção -exec permite que você execute um comando para cada um dos arquivos encontrados.

Primeiro, crie todos os diretórios no pendrive:

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

Copie todos os arquivos simples:

cd /var/mydir
find . -type f -exec cp {} /media/usbdrive/{} \;
    
por 13.11.2009 / 12:45