Salin direktori di Unix

78

Bagaimana saya bisa menyalin struktur direktori, dir1, ke dir2, (dengan semua subdirektori) di Unix menggunakan jendela terminal?

Dinesh Kumar
sumber
2
"cp -r / dir1 / dir2" Apakah ini benar ??
Dinesh Kumar
Ya itu benar. Anda mungkin ingin menandai salah satu jawaban sebagai solusi Anda.
qroberts

Jawaban:

115
cp -rf /source/path/ /destination/path/

-r = rekursif, menyalin semua sub-direktori

-f = force, jika file tujuan yang ada tidak dapat dibuka, hapus dan coba lagi

Catatan Anda harus berhati-hati ketika menggunakan -fbendera karena akan secara paksa menimpa apa pun yang Anda salin. Terima kasih @Nifle untuk saran ini.

Anda mungkin ingin menggunakan * wildcard untuk menyalin semua file di direktori jika perlu.

qroberts
sumber
11
Saya tidak setuju bahwa Anda harus menggunakan fbendera. -f if an existing destination file cannot be opened, remove it and try again
Nifle
Secara pribadi saya selalu menggunakan flag -f. Bukan latihan yang bagus jadi mungkin Anda benar.
qroberts
Jika Anda tahu apa fungsinya, dan Anda tahu apa yang Anda lakukan tidak apa-apa. Tetapi dalam kasus ini dengan pengguna yang tidak berpengalaman mungkin tidak cocok.
Nifle
@Nifle Ya, saya mengerti apa yang Anda katakan. Hanya jika dia memaksanya, peluangnya untuk bekerja lebih baik daripada jika tidak. Itu semua tergantung pada apa yang Anda lakukan dan Anda memahami apa yang dilakukannya.
qroberts
Jika Anda memberi catatan pada jawaban Anda tentang -ftanda yang berguna jika Anda menyalin <source> di atas <dest> (seperti dalam menimpa hal-hal di <dest>), saya akan mengambilnya sendiri dan menghapus jawaban saya)
Nifle
11

Sementara cp -Rjawabannya benar (BTW kasus bendera pada BSD harus berupa modal, keduanya didukung di linux), ada mantra lama yang melibatkan tar :

$ tar cf - . | (cd DIR; tar xf - )

Kenapa kau mau melakukan itu? Karena tar memiliki pemahaman tautan yang cukup canggih baik yang keras maupun yang simbolis.

Apakah Anda ingin Anda menyalin untuk mengganti tautan simbolis yang ada dengan yang memiliki teks yang sama? Atau dengan tautan ke target yang sama (menyesuaikan jalur relatif untuk mengkompensasi)? Atau dengan salinan target bitwise?

Jika dua file dalam dokumen asli ditautkan dengan keras, apakah struktur yang baru memiliki dua salinan data atau hanya satu?

Keputusan, keputusan. Tar memiliki default yang masuk akal, tetapi memungkinkan Anda untuk lebih spesifik.

dmckee
sumber
9

saya suka

cp -axv source dest

Rsync adalah alat yang bagus untuk ini

rsync -va source dest
Pete Ashdown
sumber