Bagaimana saya bisa menggunakan cp untuk menyalin direktori tetapi mengabaikan sub direktori tertentu di Linux

9

Karena masalah Hard disk saya mencoba untuk menggeser partisi dari satu hard disk ke yang lain. Saya mengikuti http://www.ibm.com/developerworks/library/l-partplan.html artikel untuk melakukannya. Pada bagian penyalinan saya ingin mengabaikan satu sub direktori tertentu. Bagaimana saya bisa mencapai itu dengan mengingat ketika menyalin saya harus menjaga grup pemilik dan cap waktu saya. Ada sekitar 700 GB data yang perlu disalin jika saya tidak mengabaikan subdirektori tertentu.

P Roy
sumber

Jawaban:

11

rsync -ax --exclude [relative path to directory to exclude] /path/from /path/to

Anda mungkin ingin (atau tidak) menggunakan --deljuga. Periksa halaman manual.

Marco Mariani
sumber
Ya itu berhasil. Ini bekerja ..
P Roy
2

Biasanya saya gunakan cpiosebagai berikut,

cd source_dir; find . -depth | cpio -pdmv dest_dir

Dan karena ini adalah saluran pipa Anda dapat meletakkan "filter pengurangan" di tengah.

cd sourcedir; find . -depth | grep -v exclude_dir | cpio -pdmv dest_dir

atau Anda dapat membagi ini menjadi beberapa langkah,

cd source_dir; find . -depth > files.lst
gedit files.lst  # (take out the offending directory and files and save back to files.lst)
cpio -pdmv dest_dir < files.lst

Tentu saja saya akan menguji ini pada sesuatu yang lebih kecil terlebih dahulu tetapi Anda mendapatkan ide.

hotei
sumber
0

Bisakah Anda memindahkan sementara ( mv) subdirektori besar ke beberapa lokasi lain, melakukan penyalinan, dan kemudian mengembalikan subdirektori? Saya tidak dapat melihat opsi langsung cpuntuk melakukan ini.

Abu
sumber
Saya juga memeriksa man cp tidak ada cara untuk mengabaikan menggunakan cp. Saya memiliki 550 GB data di sub direktori dan mv yang mungkin memakan waktu berjam-jam.
P Roy
Saya berasumsi mv akan menjadi operasi yang relatif murah - memperbarui referensi ke data daripada memindahkannya secara fisik di disk. Setidaknya, saya selalu menemukan gerakan di Windows lebih cepat daripada salinan - sistem file Linux dapat bekerja sepenuhnya berbeda.
Ash
mv ke hard disk yang sama cepat. Tetapi ketika seseorang melakukan mv di hardisk saya pikir itu membutuhkan waktu yang sama dengan cp.
P Roy
Saya bermaksud memindahkannya ke suatu tempat di hard disk yang sama untuk menghindarinya, lalu menyalin sisanya ke disk jarak jauh, lalu memindahkan file besar kembali. Kecuali Anda menyalin seluruh disk dari /.
Ash
0

Solusi yang agak jelek tapi ... mengapa tidak cp semuanya dalam direktori tidak secara rekursif, dan kemudian menyalin direktori individu secara rekursif?

Journeyman Geek
sumber
-1

Jadi mengapa tidak adil?

cp -Rv [SRC] [DEST] | grep -v [EXCLUDE]
halfcab123
sumber