Saya ingin memindahkan konten direktori dalam direktori lain dengan folder yang sama.
Ini sebuah contoh:
Saya punya ./backup
direktori base
dan test
. Sekarang saya ingin memindahkan direktori ini ./backupArchives
.
Saya menggunakan ini:
mv ./backup/* ./backupArchives
tapi saya mendapat kesalahan
mv: cannot move './backup/base' to './backupsArchive/base': Directory not empty
Saya mencoba menggunakan --force
, tetapi tidak berhasil. Apakah ada cara untuk memindahkannya ketika folder sudah ada?
Catatan: Saya hanya ingin menggabungkan konten, tidak ada penulisan ulang.
rsync
sebagai gantinya, itu akan melakukan penggabungan.Jawaban:
Meskipun halaman manualnya tidak mendokumentasikannya,
mv
akan menolak untuk mengganti nama direktori ke direktori lain jika direktori target berisi file. Ini adalah hal yang baik dalam kasus Anda karena Anda ternyata ingin menggabungkan konten sumber ke dalam target, yangmv
tidak akan berhasil.Gunakan
rsync -a backup/ backupArchives/
sebagai gantinya. Setelah iturm -rf backup/*
.Alih-alih menggunakan
rsync
, Anda juga bisa melakukan yang klasikyang menghasilkan lebih banyak poin geek.
sumber
rm -rf backupArchives
tanpa konsekuensi, apalagi yang 'mengerikan'.sudo sh -c '(cd backup && tar c .) | (cd backupArchives && tar xf -)'
Cepat dan kotor, jika Anda tahu apa yang Anda lakukan:
sumber
Setelah direktori yang Anda pindahkan, Anda perlu
*
(mewakili teks atau nomor apa saja). Sebagai contoh:itu saja, jika Anda memindahkan file, daripada Anda memindahkan sebagai:
mv /var/www/index.php /recovery/index.php
Cara lain adalah mengemas konten folder itu dengan menggunakan tar:
Kemudian pindahkan file tersebut ke file lainnya. Saya juga merekomendasikan langkah ini karena tar memampatkannya dan membuatnya lebih kecil ukurannya.
Untuk mengekstrak file ke folder lain gunakan
Jika Anda perlu menyalin ke lokasi yang bukan milik Anda, pastikan untuk menambahkan dulu perintah Anda dengan
sudo
perintah setelah opsi apa pun yang Anda putuskan untuk digunakan.sumber
-R
pasti tidak seharusnya muncul setelah argumen pertama. Opsi (hampir) selalu mendahului argumen perintah. Juga,mv
tidak memiliki-R
pilihan, dan akhirnya, rekursi tidak relevan dengan amv
. @ DimitrisTheodorid silakan uji jawaban Anda terlebih dahulu.Tentu
rsync
tidak berfungsi, tetapi ini mungkin bekerja juga untuk mesin yang tidak mendukungrsync
(yaitu di cpanel, yang rsync tidak diinstal secara default).Bagaimana dengan menggunakan:
Kemudian hapus
backup
direktori jika perluNOTE1: Anda perlu
cd
kebackup
direktori sebelum mengeksekusicp -R --parents ...
Note2: Periksa
backupArchives
direktori jika Anda mendapatkan file baru dari cadangan.sumber
Sebelum mengajukan pertanyaan, mari kita pertimbangkan kasus sederhana.
Misalkan di / home / admin kita memiliki dua folder
foo
danbar
yang memiliki struktur subdirektori yang sama, tetapi masing-masing berisi file yang berbeda di dalamnya. Sekarang kami ingin menggabungkan mereka menjadi satu. Ketika kita melakukan hal-hal sepertimv foo/* bar
, kesalahanmv: directory not empty
terjadi.Solusi saya adalah menyerahkan alat baris perintah dan beralih ke pengelola file GUI, misalnya, lumba-lumba. Ketika Anda mengganti nama
foo
menjadibar
di lumba-lumba, itu memberi Anda opsi untuk menulis ke folder tujuan, dan meminta Anda apakah akan menimpa file yang ada, secara interaktif. Ini menghindari penyalinan dan penghapusan, yang pada dasarnya menghemat waktu Anda tanpa satu baris kode pun.PS: Saya tidak menguji setiap manajer file di luar sana. Tetapi kebanyakan dari mereka harus memiliki fitur ini.
sumber