Linux'ta uzak klasörleri senkronize et


6

Bir Linux sisteminde bulunan bir klasörün tek yönlü artımlı senkronizasyonunun en basit yolu nedir.

Komut satırını kullanmak için +1. Rsync kullanmadığım için +2 (sistemimde bazı problemler var gibi görünüyor.)


3
Rsync ile ilgili problemleriniz tam olarak nedir?
innaM

5
Yana rsyncçok büyük olasılıkla en basit cevabı, bununla yaşıyorsanız ne sorunlar açıklar. (Sorunlar her nasılsa, başka bir çözüme yayılabilir.)
Telemachus

Necro, evet, ama: sshfs bu soruyu inceleyen herkes için de işe yarayabilir.
IronEagle

Yanıtlar:


7

csync , normal kullanıcı için özellikle sizin için tasarlanmış bir dosya senkronizörüdür.

csync bir kütüphanedir ve komut satırı istemcisini varsayılan olarak gönderir. Sunucu gerektirmez ve sftpveya aracılığıyla senkronizasyon sağlar samba.

Kullanım örnekleri:

csync /home/csync smb://csync:secret@rupert.galaxy.site/Users/csync
csync /home/csync sftp://csync@krikkit.galaxy.site:2222/home/csync

csyncKomut tarafından sağlanmaktadır csync-owncloudubuntu paketinin. ( sudo apt-get install csync-owncloud libcsync-plugin-sftp libcsync-plugin-smbeğer onları da istersen)
ThorSummoner

Böylece, talep üzerine tek seferlik bir senkronizasyon çalışır. Bir dizini izlemek ve sürekli senkronize etmek için bunun nasıl kullanılacağı hakkında herhangi bir bilgi bulamadım.
ThorSummoner

7

Bence problemlerinizi rsync ile çözmelisiniz, bu unix'ler için denenmiş ve doğru "senkronizasyon aracıdır.

rsync -uav --delete /loal/path example.com:/remote/path

Not: İki yönlü Senkronizasyon için kullanabilirsiniz sesliliğin yanı sıra CSYNC .


+1, fakat bu sadece benim için kısmi bir cevaptı. rsyncSsh üzerinden kullanmanız gerekiyorsa , kullanınrsync -uav --delete -e ssh remoteuser@remotehost:/remote/dir /this/dir/
zelanix

2

Bu şekilde çıplak araçlar ile tek yönlü eşitleme yapacağım.

Başlangıçta, tüm dosya kümesini katlayın ve hedef noktaya kopyalayın.
Ayrıca, temel dizinde bir işaretçi ayarlayın.

touch /Source/base/directory/last-sync-time.txt

Şimdi, Kaynaktan Hedefe senkronizasyonu yapmak istiyoruz.

Bir sonraki seferde ileri senkronizasyon için yuvada (Kaynaktan Hedefe),

# The backup script
cd /Source/base/directory
tar cfj -N ./last-sync-time.txt backup.tar.bz2 .
scp backup.tar.bz2 user@backup-server:/Backup/Directory/
touch /Source/base/directory/last-sync-time.txt
rm -f backup.tar.bz2
  1. -N ./filenameSöyler katran değiştirilmiş veya sonrasında oluşturulan dosyaları arşivlemek için filenameyaratılmış / değiştirildi.
    • Zaman için yerel referans kullanmak, hata yapmadığınızı onaylar; Eğer bir sebepten dolayı yedekleme yapılmazsa, bir sonraki
    • Bu betiği Kaynak makinede cronjob girişi olarak ayarlayabilirsiniz
    • Genel anahtar kimlik doğrulamasıscp ile kullanacağınızı farz ediyorum
    • Ayrıca, backup-serverbu betiğin ne zaman yayınlanabileceğini de varsayalım.
    • Daha güvenli olmak için, yedeklemenin saklandığını doğrulamak için kontroller ekleyebilir ve daha sonra touchkomutu düzenleyebilirsiniz.
    • Ayrıca, Hedef noktasında yer alan üst üste bindirilen yedekleri genişletmek için komutlar eklemeyi de seçebilirsiniz; Veya artımlı tar.bz2arşivleri saklayın .

0

I Bu kısa betiği, bir dizini uzak sftp klasörü ile izlemek ve sürekli olarak senkronize etmek için kullanın;

#!/bin/sh
dir1=/home/user/folder
 while inotifywait -qqre modify "$dir1";
 do
    csync /home/user/folder sftp://remoteuser:remotepass@remoteaddress:remoteport/remotefolderpath
done
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.