Saya sedang melakukan transfer data, sistem file lama sangat bergantung pada direktori yang sekarang berada di jalur yang berbeda. Ini adalah direktori git yang menyimpan kode online. Saya tidak punya hak untuk memindahkan atau mengganti namanya.
Jadi yang bisa saya lakukan adalah rsync direktori ini ke jalur lama yang sama. Tetapi nama direktori juga berubah.
Apakah ada cara mudah yang bisa saya rsync direktori ke direktori target dengan nama yang berbeda?
src
direktori di bawahdest
direktorirsync
pernah saya gunakan. Jika itu benar-benar terjadi pada Anda, Anda kehilangan garis miring di akhir argumen direktori sumber.dest
adalah symlnk untuksrc
, itu bukan berakhir menyalinsrc
kesrc/src
. Diuji pada macOS. Berharap saya bisa menggantibar -> foo/
denganbar/
, tetapi harus menggunakan direktori sementara antara.dest
adalah symlinksrc
, cukuprm dest
sebelum menjalankan perintah di atas.rsync
cukup cerdas untuk dibuatdest
sebelum menyalin kontensrc
. Anda tidak perlu direktori suhu menengah.Jika filesystem lama dan baru keduanya dapat diakses oleh mesin Anda, maka pertimbangkan untuk menggunakan tautan simbolik alih-alih rsync. Jika perintah rsync Anda yang Anda gunakan tidak menentukan host (atau jika mereka adalah host yang sama), maka ini masalahnya. Anda mencoba untuk mencerminkan dua direktori dengan nama berbeda di host yang sama. Jangan gunakan rsync untuk ini, karena Anda menduplikasi data, dan Anda harus sering menjalankan rsync agar tetap sinkron.
Menggunakan tautan simbolik adalah perbaikan satu kali yang akan mencerminkan dua direktori (dengan nama yang berbeda) dan hampir tidak memerlukan ruang. Ini seperti membuat direktori alias yang menunjuk ke direktori lain.
Katakanlah Anda memiliki git lama di direktori bernama / old / path / old_git dan sekarang repositori kode telah dipindahkan ke / new / path / new_git
Anda dapat melakukan:
Ini akan membuat tautan seperti itu:
/ old / path / old_git -> / new / path / new_git
Sehingga segala sesuatu yang dimasukkan ke dalam new_git akan segera tersedia dengan cara lama juga, tanpa duplikasi data, dan tanpa harus terus menyinkronkannya.
sumber
Saya menemukan solusi alternatif sekarang.
Menggunakan
rysnc -r /origin/* /target/
dapat menyinkronkan semua konten dari direktori asal ke direktori target.sumber
rsync -r $(find /origin -maxdepth 1 -type f) /target/
. Seperti yang ditunjukkan oleh @RayBurgemeestre, ekspansi shell glob tidak akan menyertakan file dot.