Agak lucu, ada banyak cara di mana alat-alat baris perintah Linux jauh lebih unggul daripada yang Windows, tetapi satu hal yang saya belum menemukan setara dengan itu adalah robocopy . Robocopy jauh lebih fleksibel daripada cp
, dan saya tidak tahu bagaimana melakukan apa yang saya inginkan dengan alat Linux.
Kasus penggunaan khusus adalah bahwa saya memiliki dua direktori dengan sebagian besar file yang mirip, tetapi satu memiliki file sumber yang lebih baru dan satu memiliki file konten yang tidak dimiliki direktori lain, dan mungkin file sumber yang lebih baru (untuk situs web). Saya ingin menyalin file dari direktori terakhir ke yang pertama, menambahkan file konten baru dan semacamnya, tetapi tidak menimpa file yang lebih baru di direktori tujuan.
Saya mencoba mencari cara untuk melakukan ini di Linux selama mungkin setengah jam, memutuskan bahwa saya mungkin harus belajar bash scripting atau sesuatu untuk melakukan apa yang saya inginkan, dan kemudian saya menyadari bahwa saya bisa menggunakan robocopy. Saya juga punya beberapa persyaratan lain. Saya pada dasarnya mengubah situs web Python (Django) dari repositori SVN ke repositori Git, dan saya ingin memastikan bahwa saya tidak memiliki perubahan yang tidak terikat pada SVN. Namun, saya ingin mengecualikan .svn
direktori dan .pyc
file Python yang dikompilasi secara kondisional . Perintah robocopy berikut melakukan apa yang saya inginkan:
robocopy source destination /XO /E /XD .svn /XF *.pyc
Apakah ada yang setara dengan Robocopy di Linux? Saya melihat rsync
sebentar, tetapi sepertinya saya harus mengatur server rsync sebelum mencoba menyinkronkan folder.
Jawaban:
Kedengarannya seperti rsync yang pasti Anda cari Anda tidak perlu mengatur 'server rsync' untuk menyalin file dari satu mesin ke komputer lain. Rsync mendukung penyalinan file melalui SFTP (SSH File Transfer) yang sebagian besar kotak linux sudah aktifkan (jika tidak dinonaktifkan secara manual).
Lihat file Mirror Lifehacker di seluruh sistem dengan rsync untuk detail lebih lanjut:
sumber
scp
sintaks seperti untuk mentransfer lebih dari ssh? Saya sebenarnya mencoba mentransfer file pada satu mesin, tetapi itu bagus untuk diketahui.rsync akan menyalin file dari satu direktori ke direktori lain di mesin yang sama seperti robocopy. Ini adalah perintah rsync yang setara dengan perintah robocopy Anda:
Ini secara rekursif akan menyalin sumber ke tujuan dan mengecualikan file yang lebih lama serta direktori / file '.svn' dan '* .pyc'.
sumber