(Nach erneutem Lesen der Frage bearbeitet. Fragender sagt, dass Rsync nicht installiert ist.)
Ein mögliches Problem bei Ihrer find / xargs-Lösung sind Leerzeichen in den Dateinamen. Um dies zu umgehen, weisen Sie find und xargs an, ein Nullzeichen (ASCII 0) zu verwenden, um die gefundenen Dateien zu trennen:
find ./sourcedirectory -not ( -name .svn -a -prune ) -print0 | xargs -0 -IFILES cp FILES ./destinationdirectory
Wenn Sie feststellen, dass Rsync verfügbar ist, denke ich immer noch, dass Rsync die weitaus bessere Lösung ist:
Verwenden Sie rsync mit der Option -C. Auf der rsync-Manpage :
Dies ist eine nützliche Abkürzung, um eine Vielzahl von Dateien auszuschließen, die Sie häufig nicht zwischen Systemen übertragen möchten. Es verwendet einen ähnlichen Algorithmus wie CVS, um zu bestimmen, ob eine Datei ignoriert werden soll.
Dadurch wird rsync angewiesen, diese Muster zu ignorieren:
RCS SCCS CVS CVS.adm RCSLOG cvslog.* tags TAGS .make.state .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core .svn/ .git/ .bzr/
Zum Beispiel:
rsync -avC /path/to/source/directory /path/to/destination/directory
(Hinweis: Wenn Sie sich mit rsync noch nicht so gut auskennen, lesen Sie auf dieser Manpage unbedingt nach, wie rsync mit einem abschließenden Schrägstrich im Quellpfad umgeht. Es verhält sich anders, wenn Sie den Schrägstrich einfügen, als wenn Sie dies nicht tun. Suche nach 'nachlaufender Schrägstrich')