Saya ingin menyalin sekitar 200 direktori & subdirektori dari satu lokasi ke lokasi lain, tetapi saya tidak ingin menyalin ribuan file di dalam direktori tersebut. Saya di Linux.
Catatan: Saya tidak punya cukup ruang untuk menyalin semuanya lalu menghapus semua file.
linux
command-line-interface
rsync
copy
Kyle West
sumber
sumber
rsync -a --include='*/' --exclude='*' ${source} ${destination}
.sumber
Pendekatan lain adalah dengan find dan mkdir :
Pastikan TARGET sudah ada atau gunakan opsi -p dari mkdir.
sumber
Anda juga dapat melakukan:
Kekuatan kesederhanaan;)
sumber
Demikian pula, menggunakan tar (GNU):
Anda tidak benar-benar memerlukan
-print0
baris perintah pada temukan atau-0
pada baris perintah rsync kecuali Anda memiliki nama file yang berisi karakter baris baru (yang mungkin tetapi sangat tidak mungkin). Tar (dan rsync, dan cpio) membaca nama file baris demi baris; menggunakan terminator NULL sebagian besar bergunaxargs
, yang biasanya membaca nama file yang dipisahkan dengan spasi putih (dan karenanya tidak menangani file / direktori dengan spasi tanpa nama-0
).sumber
sumber
Akan menyalin semua file dengan tautan keras. Struktur yang sama, izin yang sama. (catatan: tautan keras, jadi tidak ada penyimpanan yang hilang.)
sumber
ls -d * / @source: find. -type d -print0> dirs.txt @destination: xargs -0 mkdir -p
Ini akan menyebabkan kedua perintah menggunakan nulls sebagai pemisah alih-alih spasi putih. Perhatikan bahwa urutan -tipe d dan -print0 penting!
sumber
@source
dan@destination
merupakan indikasi bagi pembaca, tetapi meskipun demikian ini tidak berhasil.