एक केंद्रीय सर्वर के बिना ड्रॉपबॉक्स की तरह फाइल सिंक [बंद]


22

मैं इंटरनेट पर अपने दो मैक पर सेकेंडरी ड्राइव को सिंक करने का तरीका ढूंढ रहा हूं। मेरे पास दो मैक के बीच लगातार वीपीएन कनेक्टिविटी है, और मैं उन्हें एक्सेस कर सकता हूं जैसे कि वे एक दूसरे के ठीक बगल में बैठे हों।

मैं एक ड्रॉपबॉक्स जैसा अनुभव लागू करने के लिए एक रास्ता खोज रहा हूं जहां अगर मैं एक मैक पर एक फ़ाइल को संशोधित करता हूं, तो फ़ाइल दूसरे मैक (और इसके विपरीत) में धकेल दी जाएगी। मुझे बैंडविड्थ को थ्रॉटल करने की क्षमता भी चाहिए (इसलिए हमारे छोटे 1 मेगाबिट अपलोड पाइप को ओवरलोड नहीं किया जाता है)। कोई सुझाव?

ओह, और ड्रॉपबॉक्स का उपयोग करना इस समय प्रश्न से बाहर है क्योंकि मेरी ड्राइव 500GB है। धन्यवाद!


"Rsync" के एक पोर्ट की जांच करें जो कि बस के लिए एक लिनक्स उपकरण है। यह प्रत्येक रन पर आपकी फ़ाइलों को सिंक्रनाइज़ कर सकता है; तब आपको केवल जब भी sg परिवर्तन होता है, तब इसे ट्रिगर करने का एक तरीका चाहिए।
dkellner

क्या आप चाहते हैं कि सभी 500GB सिंक हो जाएं?
क्यूबसप्लि 42

5
यह सॉफ्टवेयर सिफारिशों पर विषय पर होगा। इस प्रश्न को देखें (Mac के लिए विशिष्ट नहीं): softwarerecs.stackexchange.com/questions/129/…
निकोलस राउल

क्या आपको भी इसकी ज़रूरत है? "यदि मैं फ़ाइल को किसी मशीन पर हटाता हूं, तो उसे फिर से बनाए जाने के बजाय दूसरी मशीन से भी हटा दिया जाना चाहिए।"
पैट्रिक एम

क्या यह iCloud के लिए नहीं है? hints.macworld.com/article.php?story=20120803092156969
ब्लेज़मॉन्गर

जवाबों:


30

की जाँच करें बिट सिंक । इसमें ड्रॉपबॉक्स जैसी सिंक की कार्यक्षमता है, लेकिन बिना क्लाउड के।


डाउनसाइड: सिंक करने में सक्षम होने के लिए दोनों मशीनों को एक साथ ऑनलाइन होना होगा।
गेराल्ड श्नाइडर

18
@GeraldSchneider क्या आपको ऐसी किसी चीज़ के बारे में पता है जिसमें यह सीमा नहीं है?
शेल्वैकु

2
@shelvacu, संभव नहीं। यदि आप चाहते हैं कि यह ऑनलाइन दोनों मशीनों की आवश्यकता के बिना सिंक हो, तो आपको क्लाउड स्टोरेज (ओपी अनुरोध के लिए काउंटर) की आवश्यकता है।
हेलोजगॉस्ट

5
जरूरी नहीं कि क्लाउड स्टोरेज हो। आपको एक नोड की आवश्यकता है जो हमेशा ऑनलाइन हो। यह एक कंप्यूटर हो सकता है, एक NAS, एक क्लाउड सेवा, लॉरेंस द्वारा प्रस्तावित या इसी तरह के समाधान के रूप में आपके स्वयं के होस्ट खुद के खुद के क्लाक उदाहरण हैं। लेकिन जब तक आपके पास एक नोड हमेशा ऑनलाइन नहीं होता है यह सीमा हमेशा लागू होती है।
गेराल्ड श्नाइडर

3
मैं बिटटोरेंट सिंक का उपयोग करता हूं और मैं इसकी अत्यधिक अनुशंसा कर सकता हूं - मैं इसे ड्रॉपबॉक्स के साथ संयोजन में उन फाइलों के लिए उपयोग करता हूं जो बहुत बड़ी हैं और वहां जगह लेने के लायक नहीं हैं। एक बात पर विचार करना है कि यह फाइलों के एक साथ संपादन के साथ अच्छी तरह से व्यवहार नहीं करता है - ड्रॉपबॉक्स की तरह कोई संघर्ष से निपटने नहीं है - अंतिम संपादित फ़ाइल बस जीतती है। जरूरी नहीं कि यह एक समस्या हो, लेकिन यह आपकी आवश्यकताओं पर निर्भर करता है।
zelanix

16

यदि आप कट्टर जाना चाहते हैं, तो आप ऑक्सएक्स में मूल रूप से * निक्स कर्मचारियों की तरह rsync कमांड का उपयोग कर सकते हैं ।

सब कुछ से पहले, आपके पास ssh द्वारा दूरस्थ होस्ट तक पहुंचने की अनुमति होनी चाहिए। OpenSSH सर्वर को Mac OsX पर प्रीइंस्टॉल्ड किया गया है और आपको कोई अतिरिक्त पैकेज स्थापित करने की आवश्यकता नहीं है। बस कुछ सिस्टम सेटिंग्स करने की जरूरत है। मैक ओएस एक्स पर ओपनएसएसएच सर्वर को सक्षम करने के लिए, सिस्टम प्राथमिकताएं खोलें और साझाकरण पर क्लिक करें। और इसके बजाय, SSH को सक्षम करने के लिए रिमोट लॉगिन बॉक्स की जांच करें, फिर अनुमति दें एक्सेस अनुभाग के लिए सभी उपयोगकर्ताओं को लेबल किए गए रेडियो बटन का चयन करें ।

अब आप ssh द्वारा दूरस्थ होस्ट तक पहुँच सकते हैं।

अब, आपको ssh पर स्थानीय अतिथि मशीन से दूरस्थ होस्ट के लिए पासवर्ड रहित पहुँच के लिए एक सार्वजनिक पहुँच कुंजी बनानी होगी। उसके लिए आपको अपना हाथ थोड़ा गंदा करना होगा। :)

पहले, यह निर्धारित करें कि क्या आपके पास पहले से ही प्रमाणीकरण कुंजी है। में टर्मिनल , चलाएँ:

sudo ls -la /var/root/.ssh

यदि आप "id_dsa" और id_dsa.pub देखते हैं , तो आप इस अनुभाग के बाकी हिस्सों को छोड़ सकते हैं।

क्लाइंट मशीन पर, टर्मिनल में निम्नलिखित चलाएँ:

sudo ssh-keygen -t dsa -f /private/var/root/.ssh/id_dsa -C "comment about this key"

AFTER ने स्थानीय अतिथि मशीन में एक्सेस कुंजी बनाई, आपको अतिथि की अधिकृत कुंजी को होस्ट की अधिकृत_की फ़ाइल में कॉपी करना होगा। आप इसे एक साधारण टर्मिनल कमांड के साथ कर सकते हैं, जो सार्वजनिक कुंजी को अधिकृत कुंजी की सूची में जोड़ता है:

sudo cat /private/var/root/.ssh/id_dsa.pub | ssh root@remote_host_address 'cat - >> ~/.ssh/authorized_keys'

नीचे दी गई कमांड आपके दूरस्थ होस्ट पर स्थानीय अतिथि मशीन में आपके रूट फाइल सिस्टम का एक वृद्धिशील बैकअप करेगी:

/usr/local/bin/rsync -aNHAXx --protect-args --fileflags --force-change --rsync-path="/usr/local/bin/rsync" / root@remote_host_address:/Volumes/Backup/GuestMachine

आप तुल्यकालन व्यवहार को बदलने के लिए rsync के मापदंडों को बदल सकते हैं। यदि आप इस आदेश को crontab में जोड़ते हैं , तो सिंक्रनाइज़ेशन किसी भी समय चक्र में चलाया जा सकता है। उदाहरण के लिए:

sudo crontab -e

Crontab के नीचे लाइन में जोड़ें:

*/30 * * * * /usr/local/bin/rsync -aNHAXx --protect-args --fileflags --force-change --rsync-path="/usr/local/bin/rsync" / root@remote_host_address:/Volumes/Backup/GuestMachine

यह हर आधे घंटे में सिंक्रोनाइज़ेशन चलाया जाएगा।

यहाँ नमूना पायथन लिपि है:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
Cron automated synchronization script.

Desc: Synchronize remote folder into local machine. Duplicate processes 
      are disallowed until running process finished.

Usage:
    :: Change required variables as _user, _password, _domain etc.
    :: Edit crontab 
    # crontab -e

    :: Append line below.
    */30 * * * * python synchronizator.py 2>&1 &

Author: Sencer HAMARAT (RecNes)
E-Mail: sencerhamarat@gmail.com
"""

import shlex
from subprocess import Popen, PIPE
import logging as log
import sys

__author__ = "Sencer HAMARAT"

_user = 'username'
_password = 'password'
_domain = 'example.com'

_expectation = "Enter passphrase for key \'/home/%s/.ssh/id_rsa\':" % _user
_rsync = '/usr/bin/rsync --partial --progress -avvz -e'
_pub_key = '/home/%s/.ssh/id_rsa.pub' % _user
_ssh = '/usr/bin/ssh -i %s' % _pub_key
_remoteDir = '/home/%s/backup/' % _user
_localDir = '/home/%s/backup/' % _user
_command = '%s %s %s@%s:%s %s' % (_rsync, _ssh, _user, _domain, _remoteDir, _localDir)
run_command = shlex.split(_command)

_logFile = "logfile.log"
_logFormat = "%(asctime)s %(levelname)s %(name)s %(process)d %(threadName)s %(module)s:%(lineno)d %(funcName)s() " \
             "%(message)s\n"
log.basicConfig(filename=_logFile, level=log.DEBUG, format=_logFormat)

log.debug(u'Command will run: %s' % _command)

try:
    running_command = Popen(run_command, stdin=PIPE, stdout=PIPE, stderr=PIPE)
    if running_command.poll():
        log.debug(repr(running_command.poll()))
        sys.exit()
    if _expectation in running_command.communicate():
        running_command.communicate(_password)
    print running_command.communicate()
except Exception as e:
    log.debug(repr(e))
finally:
    sys.exit()

मैंने rsync का उपयोग करने पर विचार किया था, हालाँकि समस्या यहाँ है: "क्या होगा अगर rsync 30 मिनट के बाद पूरी तरह से समाप्त नहीं हुआ है?" मैं एक ही समय में होने वाले दो rsyncs नहीं चाहता। क्या इसके आसपास कोई रास्ता है?
मुंचेली

1
@ मुनेर्सेली: यह एक साथ सिंक करने के लिए rsync के चारों ओर एक छोटा "लॉकिंग" तंत्र लिखने के लिए अपेक्षाकृत दर्द रहित है। मूल रूप से, एक bash स्क्रिप्ट में rsync कॉल लपेटें और आप जो कुछ भी करना चाहते हैं उसके लिए स्वतंत्र हैं।
unperson325680

मैंने नमूना स्क्रिप्ट को जोड़ा। मुझे उम्मीद है इससे मदद मिलेगी।
सेंसर एच।

यह एक बेहतरीन स्क्रिप्ट है। मदद के लिए बहुत बहुत धन्यवाद। मैंने सादगी और बैंडविड्थ थ्रॉटलिंग के कारण बिटटोरेंट सिंक के साथ जाने का फैसला किया। (मुझे पता है कि आप rsync के साथ अधिकतम बैंडविड्थ उपयोग सेट कर सकते हैं, लेकिन BTS अधिक सहज है)।
मुंचेली

8

यदि आप वेब आधारित पहुंच चाहते हैं तो ओक्क्लाउड एक संभव समाधान है।

ओनक्लाउड को होस्ट करने के लिए आपको अपने स्वयं के सर्वर की आवश्यकता होगी, हालाँकि यह एक सर्वर आधारित समाधान की अधिकता है जहाँ आपके 2 ग्राहक अपनी इच्छानुसार पहुँच सकते हैं, लेकिन विचाराधीन फ़ाइल की केवल 1 प्रति होगी, जो इस पर स्थित होगी खुद का सर्वर।


क्या यह अभी भी मामला है कि आप केवल एक ही क्लॉक से जुड़ सकते हैं? उदाहरण के लिए, मेरे पास अपना भाई नहीं है और मैं अपने भाई के साथ एक और साझा कर सकता हूं?
थॉमस वेलर

कम से कम डेस्कटॉप सिंक क्लाइंट अब एक साथ कई क्लाउड कनेक्शन का समर्थन करते हैं। लेकिन एक सर्वर के भीतर भी, आप केवल विशिष्ट फ़ाइलों / निर्देशिकाओं को साझा करने में सक्षम हैं, जरूरी नहीं कि सब कुछ हो।
ओजडो


2

यदि विंडोज है, तो एक सिंकटॉय टूल है जो इसे तीन चरणों में करता है। यदि मैक, यह ChronSync उपकरण या त्रि-बैकअप उपकरण के बारे में है


हाय रुस्लान, क्या आप यह समझाने के लिए अपना जवाब संपादित कर सकते हैं कि ओपी के लिए क्रोनस्क्यून्स या ट्राई-बैकअप आदर्श समाधान क्यों होगा? अभी, यह एक बहुत ही कम गुणवत्ता जवाब है, और वास्तव में नहीं है का जवाब कैसे सवाल का। धन्यवाद
कनाडा ल्यूक को फिर से बहाल मोनिका

हेलो, आपके सवाल के लिए धन्यवाद। वैसे मैं यह नहीं बता रहा हूं कि ये कार्यक्रम आदर्श समाधान हैं, लेकिन मुझे लगता है कि यह काफी आसान है क्योंकि उनके पास जीयूआई है, इसका मतलब यह भी है कि कोई भी इसे कमांड लाइनों के जादू-मंत्रों के गुच्छा की गहरी समझ के बिना कर सकता है। इसके अलावा, मेरा मानना ​​है कि यदि किसी के पास सूचीबद्ध कार्यक्रमों का उपयोग करने का मुद्दा है, तो उसे एक अलग प्रश्न में पूछा जाना चाहिए, जैसे कि उसने क्या किया है, क्या गलत है। यह किसी विशेष प्रश्न को पूछे बिना उनके लिए यहां प्रलेखन की नकल करने के बजाय है।
रुस्लान Gerasimov

2

विचार करें। यह दो-तरफ़ा फ़ाइल सिंक्रनाइज़ेशन को संभालता है। आप इसे cronकिसी अन्य शेड्यूलिंग एप्लिकेशन के साथ किसी शेड्यूल पर सेट कर सकते हैं ।

http://www.cis.upenn.edu/~bcpierce/unison/

यूनिसन, यूनिक्स और विंडोज के लिए एक फाइल-सिंक्रोनाइज़ेशन टूल है। यह अलग-अलग होस्ट (या एक ही होस्ट पर अलग-अलग डिस्क) पर संग्रहीत फ़ाइलों और निर्देशिकाओं के संग्रह के दो प्रतिकृतियों को अलग से संशोधित करने की अनुमति देता है, और फिर प्रत्येक प्रतिकृति में दूसरे में परिवर्तन का प्रचार करके तारीख तक लाया जाता है।

यूनिसन कॉन्फ़िगरेशन प्रबंधन पैकेज (CVS, PRCS, तोड़फोड़, BitKeeper, आदि), वितरित filesystems (कोडा, आदि), यूनी-दिशात्मक मिररिंग यूटिलिटीज (rsync, आदि), और अन्य सिंक्रनाइज़र जैसे उपकरणों के साथ कई सुविधाएँ साझा करता है। (Intellisync, Reconcile, आदि)। हालांकि, कई बिंदु हैं जहां यह अलग है:


1
+1: जब द्विदिश सिंक की आवश्यकता होती है, तो यह स्पष्ट रूप से rsync पर जीतता है, जबकि इसकी सभी शांत विशेषताएं होती हैं।
ओजडो

1

मैं एक ही LAN पर दो PC के साथ GoodSync के साथ अच्छे भाग्य रखता हूं, लेकिन मुझे यकीन है कि यह आपकी स्थिति में अभी भी अच्छा काम करेगा।

यहाँ उनके उत्पाद विवरण है:

  • GoodSync आपके कंप्यूटर, मोबाइल उपकरणों, FTP, SFTP, Amazon S3, Google ड्राइव, SkyDrive, WebDAV, Azure के बीच फ़ाइलों को समनित करता है।
  • GoodSync पोर्टेबल ड्राइव्स, मोबाइल डिवाइसेस और FTP, S3, GDocs, SkyDrive, DAV या किसी अन्य कंप्यूटर की फाइलों का बैकअप देता है।
  • डायरेक्ट पी 2 पी सिंक: गुडसिंक कनेक्ट आपके कंप्यूटर के बीच सीधे फाइल को सिंक करता है, बिना थर्ड पार्टी सर्वर के द्वारा सिंक किए बिना सुस्ती के साथ।
  • GoodSync बहुत तेज़ है और समय-समय पर, शेड्यूल या वास्तविक समय में (फ़ाइल परिवर्तन पर) आपके आदेश पर फ़ाइलों को सिंक करता है।

आपको अपने पीसी में से किसी एक पर ही गुडसंच सेट की जरूरत है; यह दो तरह से सिंक्रनाइज़ेशन को संभालता है और जिस तरह का सिंक करता है वह अनुकूलन योग्य है। इसके अलावा, यह CNet द्वारा अत्यधिक अनुशंसित है।


हाय जॉन, क्या आप यह बताने के लिए अपने जवाब को संपादित कर सकते हैं कि GoodSync ओपी के लिए आदर्श समाधान क्यों होगा? अभी, यह एक बहुत ही कम गुणवत्ता जवाब है, और वास्तव में नहीं है का जवाब कैसे सवाल का। धन्यवाद
कनाडा ल्यूक को फिर से बहाल मोनिका

1

एक अन्य संभावित समाधान AeroFS है

AeroFS द्वि-दिशात्मक रूप से आपके उपकरणों के बीच डेटा को समकालित करता है, जबकि कभी आपके डेटा को आपके उपकरणों पर संग्रहीत करता है - आपका डेटा कभी भी उनके सर्वर के पास नहीं जाता है। AeroFS आपकी फ़ाइलों के लिए एक संशोधन इतिहास रखता है ताकि आप आवश्यक होने पर पिछले संस्करणों में वापस आ सकें और यह टकरावों को हल करने के लिए एक उपकरण प्रदान करता है।

AeroFS विंडोज, मैक, लिनक्स, आईओएस और एंड्रॉइड पर काम करता है, इसलिए इसे आपको कवर करना चाहिए।


0

इसलिए, यदि आप सिद्धांत पर क्लाउड स्टोरेज के विरोध में नहीं हैं, तो बाहरी ड्राइव के लिए दो हार्डवेयर समाधान हैं:

अंतरिक्ष बंदर एक दिलचस्प प्रतिमान का उपयोग करता है .. यह आपकी डिस्क का हिस्सा अन्य लोगों के डेटा के छोटे टुकड़ों को संग्रहीत करने के लिए आवंटित करता है, और आपके डेटा को कई अन्य लोगों के ड्राइव (एन्क्रिप्टेड, निश्चित रूप से) पर संग्रहीत करता है। इस तरह, आपदा के मामले में बहुत अधिक अतिरेक है, और आपकी मशीनों को एक-दूसरे को देखने या यहां तक ​​कि एक ही समय में कनेक्ट होने में सक्षम होने की आवश्यकता नहीं है।

फ़ाइल ट्रांसपोर्टर थोड़ा सरल है, इसमें डेटा केवल कभी-कभी अन्य फ़ाइल ट्रांसपोर्टर ड्राइव पर सिंक किया जाता है जिसे आप विशेष रूप से सिंक करने के लिए सेट करते हैं।

दोनों विकल्प बड़ी मात्रा में डेटा के लिए अच्छे हैं, और आप बस सदस्यता शुल्क के बिना एक बार हार्डवेयर खरीदते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.