Wie kopiere ich einen Verzeichnisbaum, aber nicht die fileen in Linux?

Ich möchte über 200 Verzeichnisse und Unterverzeichnisse von einem Ort zum anderen kopieren, aber ich möchte nicht die Tausende von fileen in diesen Verzeichnissen kopieren. Ich bin unter Linux.

Hinweis: Ich habe nicht genug Platz, um alles zu kopieren und dann alle fileen zu löschen.

  • rsync: kann die Passwortabfrage nicht loswerden
  • Verwenden eines Shell-Skripts, um zu überprüfen, ob rsync irgendwelche Änderungen vorgenommen hat
  • Einfaches rsync in crontab ohne passwort
  • Ist es möglich, fileen zwischen servern in Echtzeit zu synchronisieren?
  • rsync zum komprimierten Archiv der file
  • Was bedeutet die IP "192.168.1.1/24"?
  • Wie beschleunige ich rsync für kleine Dateien
  • Escape-Leerzeichen in einem entfernten Pfad bei der Verwendung von rsync über eine entfernte SSH-Verbindung
  • 8 Solutions collect form web for “Wie kopiere ich einen Verzeichnisbaum, aber nicht die fileen in Linux?”

    Ich habe das gerade gefunden:

    rsync -a -f"+ */" -f"- *" source/ destination/ 

    http://psung.blogspot.com/2008/05/copying-directory-trees-with-rsync.html

     find some/dir -type d -print0 | rsync --files-from=/dev/stdin -0 ... 

    Sie können auch tun:

     find inputdir -type d | cpio -pdumv destdir 

    Die Macht der Einfachheit;)

    Ein anderer Ansatz ist mit find und mkdir :

     find SOURCE -type d -exec mkdir TARGET/{} \; 

    Stellen Sie einfach sicher, dass TARGET bereits existiert oder verwenden Sie die Option -p von mkdir.

    Ähnlich, mit (GNU) Teer:

     find some/dir -type d -print | tar --no-recursion -T- -c -p -f- | (cd another/dir && tar -x -p -f-) 

    Sie brauchen nicht wirklich die -print0 auf der find-Befehlszeile oder die -0 auf der rsync-Befehlszeile, es sei denn, Sie haben filenamen, die Zeilenumbrüche enthalten (was möglich ist, aber höchst unwahrscheinlich). Tar (und rsync und cpio) lasen filenamen Zeile-für-Zeile; mit einem NULL-Terminator ist meistens nützlich mit xargs , die normalerweise liestpaar getrennte filenamen liest (und damit nicht verarbeitet fileen / Verzeichnisse mit Leerzeichen in ihren Namen ohne -0 ).

    ls -d * / @source: finden. -dyp d -print0> dirs.txt @destination: xargs -0 mkdir -p

    Dies führt dazu, dass beide Befehle nulls als Trennzeichen anstelle von Whitespaces verwenden. Beachten Sie, dass die Reihenfolge von -Typ d und -print0 wichtig ist!

     (cd /home/user/source/; find -type d -print0) | xargs -0 mkdir -p 
     cp -al 

    Würde alle fileen mit harten Links kopieren. Gleiche Struktur, gleiche permissions. (Anmerkung: harte Verbindungen, also kein memory verloren.)

    Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de réseau.