Bagaimana cara mengarsipkan direktori secara otomatis?

47

Saya ingin melakukan sinkronisasi satu arah.

Saya memiliki Folder Adi komputer saya yang terus diperbarui dengan konten.
Lain Folder Bdigunakan untuk tujuan cadangan yang ada di HDD eksternal.

Sekarang yang saya harapkan adalah bahwa tambahan apa pun yang ada di folder A harus masuk ke folder B. Namun sesuatu yang ada di B dan BUKAN di A "" TIDAK boleh disalin ke A "".

Singkatnya, folder cadangan dapat menyalin semua dari folder sumber, namun tidak ada yang harus disalin dari folder cadangan ke sumber.

Bhavesh Diwan
sumber
Itu bukan sinkronisasi ....
Braiam
@Braiam apa namanya? Saya tidak bisa membuat kata sendiri seperti OP. Jika Anda tahu, tolong beri tahu.
Jo Smo
@ Jojo copy? Arsipkan? Cadangkan?
Braiam
@Braiam terima kasih, sekarang saya merasa bodoh karena bertanya. : D
Jo Smo

Jawaban:

63

Kedengarannya seperti tugas yang sempurna untuk rsync

sudo rsync -az /path_to/A /path_to/B

-sebuah mode arsip (menyiratkan rekursif, menyalin symlink sebagai symlink, melestarikan pemilik, waktu modifikasi, grup, pemilik, file khusus dan perangkat)

-z kompres data

Jika Anda ingin menghapus file yang dihapus di A dari file di B, gunakan --deleteopsi

Untuk informasi tambahan, lihat:

https://help.ubuntu.com/community/rsync

Anda dapat menjalankan rsync dari cron

sudo crontab -e

Tambahkan tugas per jam

@hourly rsync /path_to/A /path_to/B

https://help.ubuntu.com/community/CronHowto

Harimau kumbang
sumber
7
Jika ada folder di dalam folder, Anda harus menggunakan opsi -r.
John S Gruber
2
Saya agak terlambat ke pesta, tetapi untuk menjalankan skrip sinkronisasi ketika hard drive terhubung Anda harus menggunakan udev. Lihatlah pertanyaan ini dari beberapa waktu yang lalu. askubuntu.com/questions/25071/…
jackweirdy
1
@JohnSGruber opsi -a menyiratkan rekursif, saya akan mengedit jawaban untuk menunjukkan ini
Tomas
1
jika file-file tersebut pada mesin yang sama -zcukup memperlambat proses
Postadelmaga
1
@ JoSmo - askubuntu.com/questions/476041/… dan askubuntu.com/questions/609968/… dan man rsync dan ajukan pertanyaan baru jika perlu ketimbang bertanya dalam komentar.
Panther
15

Saya sarankan menggunakan rsync untuk tujuan ini. Rsync sangat cepat, stabil, dan serbaguna. Ada pengantar yang bagus di http://help.ubuntu.com/community/rsync

Jika diinginkan, ada ujung depan grafis opsional: grsync

 sudo rsync -azv --exclude 'dir1' /home/path/folderA/ /home/path/folderB

Perintah di atas akan menyalin dari folderA ke folderB tidak termasuk dir1. Bendera adalah

-a preserves time stamps
-z is to enable compression
-v verbose

Ada banyak lagi opsi yang tersedia.

JIm
sumber
8

Saya selalu menemukan Unison sangat membantu. Ini memiliki antarmuka berbasis teks atau GUI, dan beberapa opsi yang berbeda untuk menyesuaikannya dengan apa yang Anda inginkan (dengan sedikit mengutak-atik). Butuh sedikit waktu untuk melakukan sinkronisasi pertama, tetapi setelah itu brilian. Anda dapat menyinkronkannya satu arah, seperti yang Anda inginkan, tetapi itu akan cukup secara otomatis. Itu juga dapat menghapus dari cadangan atau tidak seperti yang Anda pilih.

Anda juga mungkin menemukan masalah dengan izin yang didukung dalam format file ubuntu, tetapi mungkin tidak di hard drive eksternal (tergantung apakah hard drive eksternal akan digunakan dalam mesin windows, ini mungkin hal yang baik), jadi Anda ingin menyinkronkan tanpa izin yang berpotensi.

Bagaimanapun, hal yang menyenangkan adalah bahwa dengan tutorial itu relatif mudah untuk mengaturnya sekali, dan setelah itu itu antarmuka GUI setiap kali Anda ingin melakukannya.

Berikut ini beberapa info tentangnya: http://www.ubuntugeek.com/unison-file-synchronization-tool.html

Dan inilah tutorialnya: http://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/unison-manual.html#tutorial

Dr Xorile
sumber
4
rsync -avPr --ignore-existing /home/username/Research/ /path/to/other/folder/on/hdd/

Ini akan menyinkronkan dan menyalin hanya data yang tidak ada di /other/folder/on/hdd/

sayangku
sumber
2

Saya setuju dengan jawaban lain, Anda dapat menggunakan rsync di Terminal atau antarmuka Grsync , luckyBackup , Conduit atau Unison yang terkenal .

Aplikasi hebat lainnya adalah Krusader (Manajer File Twin-Panel untuk KDE), di menu Tools Anda dapat menemukan "Syncronize Directories", sangat berguna.

Dalam contoh terakhir Anda dapat menginstal Wine dan menginstal file manager twin-pane besar lainnya seperti Total Commander .

Bagaimanapun Anda memiliki banyak pilihan dan semuanya ada di Pusat Perangkat Lunak Ubuntu.

Raúl F. Castro S.
sumber
1

Saya akan merekomendasikan Conduit untuk sinkronisasi sederhana. Ini tersedia sistem perangkat lunak. Itu tidak persis apa yang Anda cari

jasonwert
sumber
0

Ada alat shell yang cukup berguna yang disebut rsnapshot - http://www.rsnapshot.org/ - utilitas snapshot sistem berkas untuk membuat cadangan sistem lokal dan jarak jauh. yang menggunakan rsync dan tautan keras yang memungkinkan untuk membuat banyak, cadangan sistem file lengkap tersedia secara instan. Lakukan sudo apt-get install rsnapshotdan periksainfo rsnapshot

pengguna1180249
sumber
0

Anda dapat menyinkronkan file di dalam dua direcotries dengan:

rsync -rv /path/to/directory1/ /path/to/directory2

Melakukan rsync -rv /path/to/directory1 /path/to/directory2akan membuat directory1di dalam directory2, seperti ini/path/to/directory2/directory1/[files]

Anda bisa mengeringkan lari menggunakan -nsakelar, seperti inirsync -rnv /path/to/directory1/ /path/to/directory2

Referensi: https://www.digitalocean.com/community/tutorials/how-to-use-rsync-to-sync-local-and-remote-directories-on-a-vps

subhojit777
sumber
0

Jika Anda ingin antarmuka grafis pada sistem yang sangat dapat dikonfigurasi, cobalah FreeFileSync. Lihat, misalnya: http://linuxnorth.wordpress.com/2011/11/29/file-and-folder-synchronization/ Secara khusus, Anda menginginkan opsi "Pembaruan" untuk sinkronisasi yang akan "Menyalin file baru atau yang diperbarui ke folder kanan ", yaitu salin dari folder kiri ke folder kanan dalam tampilan dua jendela.

CentaurusA
sumber