Kopieren Sie das Verzeichnis von ext3 nach FAT32 und ignorieren Sie Symlinks, Pipes usw

1972
user17867

Ich versuche ein Shell-Skript zu schreiben, in dem ich ein Verzeichnis rekursiv auf einen USB-Stick kopiere. Ich benötige den Rückgabewert des Kopiervorgangs zur Fehlerprüfung. ich habe es versucht

cp -a /var/mydir /media/usbdrive 

und

cp -r /var/mydir /media/usbdrive 

sowie ein paar andere, aber das Problem ist, dass ich immer Fehler bekomme wie:

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

Während dies Warnungen sind und der Kopiervorgang fortgesetzt wird, erhalte ich einen nicht erfolgreichen Fehlercode, der von der Operation zurückgegeben wird, wodurch die Fehlerbehandlung in meinem Skript beeinträchtigt wird. Wie kann ich rekursiv kopieren und Fifos, Symlinks und andere Entitäten ignorieren, die auf einem FAT32-Dateisystem nicht gültig sind?

1

1 Antwort auf die Frage

2
Dave Webb

Dies sollte mit dem findBefehl möglich sein. Mit dieser -typeOption können Sie die Art der gefundenen Dateien einschränken, so dass Sie Symlinks, Pipes usw. ignorieren können. Mit dieser -execOption können Sie für jede der gefundenen Dateien einen Befehl ausführen.

Erstellen Sie zunächst alle Verzeichnisse auf dem USB-Stick:

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

Kopieren Sie dann alle einfachen Dateien:

cd /var/mydir find . -type f -exec cp {} /media/usbdrive/{} \; 
Funktioniert auch gut auf dem USB-Stick von Kingston an diesem Ort + ist nützlich, um diese verdammten kleinen Speichergeräte mit dem Standard-FAT 32 FS unter Linux zu testen. Vielen Dank @Dave Webb tuk0z vor 8 Jahren 0