Saya ingin membuat tiruan dari struktur server file multi-terabyte kami. Saya tahu bahwa cp --parents dapat memindahkan file dan itu struktur induk, tetapi adakah cara untuk menyalin struktur direktori secara utuh?
Saya ingin menyalin ke sistem linux dan server file kami dipasang CIFS di sana.
Jawaban:
Anda bisa melakukan sesuatu seperti:
untuk membuat daftar direktori, lalu
untuk membuat direktori di tujuan.
sumber
find . -type d -print0 >dirs.txt
danxargs -0 mkdir -p <dirs.txt
. Ini akan menyebabkan kedua perintah menggunakan null sebagai pemisah, bukan spasi.xargs
dapat melebihi panjang perintah maksimum sistem saat Anda mulai menangani ratusan atau ribuan pesanan, jadi gunakan ini dengan hati-hati. (Temukan batas panjang perintah dengangetconf ARG_MAX
.) Dengan banyak direktori, Anda mungkin harus menulis skrip untuk mengulang keluaran.sumber
rsync
solusi dari jawaban Chen Levy dalam pertanyaan SO ini--
adalah terminator opsi utilitas GNU standar. Artinya "hai mkdir, argumen apa pun setelah ini, ini bukan sebuah bendera, jadi perlakukan itu sebagai argumen file, bahkan jika itu dimulai dengan karakter '-'."Berikut adalah solusi sederhana menggunakan rsync:
Saya menemukan solusi ini di sana
sumber
rsync -a --include '*/' --exclude '*' "$source" "$target"
Saya tidak tahu jika Anda mencari solusi di Linux. Jika demikian, Anda dapat mencoba ini:
sumber
Ini menyalin atribut direktori dan file, tetapi bukan data file:
Kemudian Anda dapat menghapus atribut file jika Anda tidak tertarik padanya:
sumber
Solusi berikut bekerja dengan baik untuk saya di berbagai lingkungan:
sumber
Ini bekerja:
Cukup ganti SOURCE_DIR dan DEST_DIR.
sumber
Ini bahkan memecahkan masalah dengan spasi:
Di direktori asli / sumber:
lalu buat ulang di direktori yang baru dibuat:
sumber
Gantikan
target_dir
dansource_dir
dengan nilai yang sesuai:Diuji di OSX + Ubuntu.
sumber
Skrip python dari Sergiy Kolodyazhnyy diposting di Salin hanya folder, bukan file? :
atau dari cangkang:
FYI:
sumber
Pendekatan lain adalah menggunakan
tree
yang cukup berguna dan menavigasi pohon direktori berdasarkan opsi yang kuat. Ada opsi untuk direktori saja, kecualikan direktori kosong, kecualikan nama dengan pola, sertakan hanya nama dengan pola, dll. Periksaman tree
Keuntungan : Anda dapat mengedit atau meninjau daftar, atau jika Anda melakukan banyak skrip dan sering membuat sekumpulan direktori kosong
Pendekatan : buat daftar direktori menggunakan
tree
, gunakan daftar itu sebagai masukan argumenmkdir
-dfi
mencantumkan hanya direktori, mencetak jalur lengkap untuk setiap nama, membuat pohon tidak mencetak baris indentasi,--noreport
Menghilangkan pencetakan file dan laporan direktori di akhir daftar pohon, hanya untuk membuat file keluaran tidak mengandung fluff apapunLalu pergi ke tujuan di mana Anda ingin direktori kosong dan jalankan
sumber
Salin direktori hanya dengan izin dan kepemilikan terkait
sumber
Solusi 1 baris:
sumber
Jika Anda bisa mendapatkan akses dari mesin Windows, Anda dapat menggunakan xcopy dengan / T dan / E untuk menyalin hanya struktur folder (/ E menyertakan folder kosong)
http://ss64.com/nt/xcopy.html
[EDIT!]
Yang ini menggunakan rsync untuk membuat ulang struktur direktori tetapi tanpa file. http://psung.blogspot.com/2008/05/copying-directory-trees-with-rsync.html
Mungkin lebih baik :)
sumber
Berikut adalah solusi di php yang:
Buat file seperti
syncDirs.php
dengan konten ini:Jalankan sebagai pengguna yang memiliki hak yang cukup:
sudo php syncDirs.php /var/source /var/destination
sumber