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.

  • Wie pfeil die Programmausgabe auf den imageschirm UND zu einer file unter Windows
  • Hinzufügen einer randomen Verzögerung für einen Linux-Befehl
  • Verschieben Sie eine file und lassen Sie einen weichen Link hinter sich
  • Wie zeigt man die ersten N Zeilen einer Befehlsausgabe in Windows an? (das Äquivalent des Unix-Befehls "Kopf")
  • Wie fügt man der Systemkonfigurationsdatei mit sudo hinzu?
  • Tool zum Aufteilen von pcap-fileen durch TCP-Verbindung?
  • Netcat-Befehlszeilenprobleme
  • So führen Sie einen sicheren rsync zwischen den Servern über ein ungesichertes Netzwerk aus
  • Gegenteil von "net use"
  • Tastaturkürzel zum memoryn des eingegebenen Befehls und Reinigen der Zeile
  • Wie kann ich SFTP parallel hochladen und messen?
  • Wie man die Besitz von fileen von der Kommandozeile übernimmt?
  • 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.