Dropbox-Like File Sync mà không có máy chủ trung tâm [đã đóng]


22

Tôi đang tìm cách đồng bộ hóa các ổ đĩa thứ cấp trên hai máy Mac của mình trên internet. Tôi có kết nối VPN nhất quán giữa hai máy Mac và tôi có thể truy cập chúng như thể chúng đang ngồi ngay cạnh nhau.

Tôi đang tìm cách để triển khai trải nghiệm giống như Dropbox trong đó nếu tôi sửa đổi một tệp trên một máy Mac, thì tệp sẽ bị đẩy sang máy Mac khác (và ngược lại). Tôi cũng cần khả năng điều tiết băng thông (vì vậy đường ống tải lên 1 megabit nhỏ của chúng tôi không bị quá tải). Bất kỳ đề xuất?

Ồ, và sử dụng dropbox là một câu hỏi khó khăn vào lúc này vì ổ đĩa của tôi là 500GB. Cảm ơn!


Kiểm tra cổng "rsync", một công cụ Linux để biết điều đó. Nó có thể đồng bộ hóa các tập tin của bạn trên mỗi lần chạy; sau đó bạn chỉ cần một cách để kích hoạt điều này bất cứ khi nào sg thay đổi.
dkellner

Bạn có muốn tất cả 500GB được đồng bộ hóa không?
cubuspl42

5
Đây sẽ là chủ đề về Khuyến nghị phần mềm. Xem câu hỏi này (không dành riêng cho Mac): softwarerecs.stackexchange.com/questions/129/
Kẻ

Bạn có cần điều này quá không? "Nếu tôi xóa tập tin trên một trong hai máy, nó cũng sẽ bị xóa khỏi máy khác, thay vì được tạo lại."
Patrick M

Đây không phải là những gì iCloud dành cho? gợi ý.macworld.com/article.php?story=20120803092156975
Blazemonger

Câu trả lời:


30

Kiểm tra Bittorrent Sync . Nó có chức năng đồng bộ như Dropbox, nhưng không có đám mây.


Nhược điểm: Cả hai máy phải trực tuyến đồng thời để có thể đồng bộ hóa.
Gerald Schneider

18
@GeraldSchneider Bạn có biết điều gì không có giới hạn này không?
Shelvacu

2
@shelvacu, không thể. Nếu bạn muốn nó đồng bộ hóa mà không cần cả hai máy trực tuyến, bạn bắt buộc phải lưu trữ đám mây (truy cập theo yêu cầu OP).
HalosGhost

5
Không nhất thiết phải là một lưu trữ đám mây. Bạn cần một nút luôn luôn trực tuyến. Đây có thể là máy tính, NAS, dịch vụ đám mây, ví dụ ownCloud tự lưu trữ của bạn theo đề xuất của Lawrence hoặc bất kỳ giải pháp tương tự nào. Nhưng miễn là bạn không có một nút luôn trực tuyến thì giới hạn này luôn được áp dụng.
Gerald Schneider

3
Tôi sử dụng BitTorrent Sync và tôi rất có thể khuyên dùng nó - Tôi sử dụng nó cùng với Dropbox cho các tệp quá lớn và không đáng chiếm dung lượng ở đó. Một điều cần xem xét là nó không xử lý tốt các chỉnh sửa đồng thời của các tệp - không có xử lý xung đột như với Dropbox - tệp được chỉnh sửa cuối cùng chỉ đơn giản là thắng. Không nhất thiết là một vấn đề nhưng nó phụ thuộc vào yêu cầu của bạn.
zelanix

16

Nếu bạn muốn đi khó, bạn có thể sử dụng lệnh rsync tự nhiên trong OsX , như * nix staff.

Trước mọi thứ, bạn phải có quyền truy cập vào máy chủ từ xa bằng ssh. Máy chủ OpenSSH được cài đặt sẵn trên Mac OsX và bạn không cần phải cài đặt bất kỳ gói bổ sung nào. Chỉ cần làm một số cài đặt hệ thống. Để bật máy chủ OpenSSH trên Mac OS X, hãy mở Tùy chọn hệ thống và nhấp để Chia sẻ. Và hơn thế nữa, hãy chọn hộp Đăng nhập từ xa để bật SSH, sau đó chọn nút radio có nhãn Tất cả người dùng từ phần Cho phép truy cập .

Bây giờ bạn có thể truy cập vào máy chủ từ xa bằng ssh.

Bây giờ, bạn phải tạo khóa truy cập công cộng để truy cập không cần mật khẩu từ máy khách cục bộ đến máy chủ từ xa qua ssh. Cho rằng bạn phải có được bàn tay của bạn một chút bẩn. :)

Đầu tiên, xác định xem bạn đã có khóa xác thực chưa. Trong Terminal , chạy:

sudo ls -la /var/root/.ssh

Nếu bạn thấy "id_dsa" và id_dsa.pub , thì bạn có thể bỏ qua phần còn lại của phần này.

Trên máy khách, hãy chạy như sau trong Terminal:

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

Sau khi tạo khóa truy cập được tạo trong máy khách cục bộ, bạn cần sao chép khóa chung của khách vào tệp ủy quyền của máy chủ. Bạn có thể thực hiện việc này bằng lệnh Terminal đơn giản gắn thêm khóa chung vào danh sách các khóa được ủy quyền:

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

Lệnh bên dưới sẽ thực hiện sao lưu gia tăng hệ thống tập tin gốc của bạn trong máy khách cục bộ trên máy chủ từ xa của bạn:

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

Bạn có thể thay đổi các tham số của rsync để thay đổi hành vi đồng bộ hóa. Nếu bạn thêm lệnh này vào crontab , đồng bộ hóa có thể được chạy trong bất kỳ chu kỳ thời gian nào. Ví dụ:

sudo crontab -e

nối dòng dưới đây vào 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

Điều này sẽ được chạy đồng bộ hóa sau mỗi nửa giờ.

Đây là kịch bản Python mẫu:

#!/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()

Tôi đã cân nhắc sử dụng rsync, tuy nhiên vấn đề nằm ở đây: "Điều gì xảy ra nếu rsync chưa hoàn thành sau 30 phút?" Tôi không muốn hai rsyncs xảy ra cùng một lúc. Có cách nào để khắc phục điều này?
muncherelli

1
@muncherelli: tương đối không đau khi viết một cơ chế "khóa" nhỏ xung quanh rsync để ngăn chặn đồng bộ hóa đồng thời. Về cơ bản, bọc cuộc gọi rsync trong tập lệnh bash và bạn có thể tự do làm bất cứ điều gì bạn muốn.
unperson325680

Tôi đã thêm tập lệnh mẫu. Tôi mong nó sẽ có ích.
Sencer H.

Đây là một kịch bản tuyệt vời. Cảm ơn rất nhiều vì sự giúp đỡ. Tôi đã quyết định sử dụng BitTorrent Sync do tính đơn giản và điều chỉnh băng thông. (Tôi biết bạn có thể đặt mức sử dụng băng thông tối đa với rsync, nhưng BTS trực quan hơn nhiều).
muncherelli

8

Owncloud là một giải pháp khả thi nếu bạn muốn truy cập dựa trên web.

Bạn sẽ cần máy chủ của riêng mình để lưu trữ owncloud, tuy nhiên đó là giải pháp dựa trên máy chủ nơi 2 khách hàng của bạn có thể truy cập những gì họ cần theo ý muốn, nhưng sẽ chỉ có 1 bản sao của tệp được đề cập, sẽ được đặt trên Máy chủ owncloud.


Đây vẫn là trường hợp mà bạn chỉ có thể kết nối với một owncloud? Ví dụ, tôi không thể có cái riêng của mình và chia sẻ cái khác với anh trai?
Thomas Weller

Ít nhất các máy khách đồng bộ hóa máy tính để bàn hiện hỗ trợ nhiều kết nối đám mây đồng thời. Nhưng cũng trong một máy chủ, bạn chỉ có thể chia sẻ các tệp / thư mục cụ thể, không nhất thiết là tất cả mọi thứ.
ojdo


2

Nếu Windows, có một công cụ SyncToy thực hiện theo ba bước. nếu Mac, đó là về ChronSync công cụ hoặc tri-sao lưu công cụ


Xin chào Ruslan, bạn có thể chỉnh sửa câu trả lời của mình để giải thích tại sao ChronSync hoặc Tri-Backup sẽ là giải pháp lý tưởng cho OP không? Ngay bây giờ, nó là một câu trả lời chất lượng rất thấp, và không thực sự trả lời các cách của câu hỏi. Cảm ơn
Luke Luke REINSTATE MONICA của Canada

Hi, cảm ơn về câu hỏi của bạn. Tôi không nói các chương trình này là giải pháp lý tưởng, nhưng tôi nghĩ nó đủ dễ vì chúng có GUI, điều đó cũng có nghĩa là bất cứ ai cũng có thể làm điều đó mà không hiểu sâu về một loạt các cách viết ma thuật. Ngoài ra tôi tin rằng nếu một người có vấn đề về việc sử dụng các chương trình được liệt kê thì nên hỏi một câu hỏi riêng, như những gì anh ta đã làm, những gì sai \ lạ. Nó là thay vì sao chép tài liệu ở đây cho họ mà không được hỏi bất kỳ câu hỏi cụ thể.
Ruslan Gerasimov

2

Hãy xem xét Unison. Nó xử lý đồng bộ hóa tập tin hai chiều. Bạn có thể đặt nó trên một lịch trình với cronhoặc một số ứng dụng lập lịch trình khác.

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

Unison là một công cụ đồng bộ hóa tệp cho Unix và Windows. Nó cho phép hai bản sao của một tập hợp các tệp và thư mục được lưu trữ trên các máy chủ khác nhau (hoặc các đĩa khác nhau trên cùng một máy chủ), được sửa đổi riêng lẻ, sau đó được cập nhật bằng cách truyền các thay đổi trong mỗi bản sao này sang bản sao khác.

Unison chia sẻ một số tính năng với các công cụ như gói quản lý cấu hình (CVS, PRCS, Subversion, BitKeeper, v.v.), hệ thống tệp phân tán (Coda, v.v.), tiện ích phản chiếu đơn hướng (rsync, v.v.) và các trình đồng bộ hóa khác (Intellisync, Reconcile, v.v.). Tuy nhiên, có một số điểm khác nhau:


1
+1: Khi cần đồng bộ hóa hai chiều, điều này rõ ràng sẽ thắng trên rsync, trong khi có tất cả các tính năng thú vị của nó.
ojdo

1

Tôi đã có may mắn với GoodSync với hai PC trên cùng một mạng LAN, nhưng tôi cá là nó vẫn hoạt động tốt trong tình huống của bạn.

Dưới đây là mô tả sản phẩm của họ:

  • GoodSync đồng bộ hóa các tệp giữa máy tính, thiết bị di động, FTP, SFTP, Amazon S3, Google Drive, SkyDrive, WebDAV, Azure.
  • GoodSync sao lưu các tệp vào ổ đĩa di động, thiết bị di động và FTP, S3, GDocs, SkyDrive, DAV hoặc máy tính khác.
  • Đồng bộ hóa P2P trực tiếp: GoodSync Connect đồng bộ hóa các tệp trực tiếp giữa các máy tính của bạn mà không bị chậm được giới thiệu bằng cách đồng bộ hóa qua máy chủ của bên thứ 3.
  • GoodSync rất nhanh và đồng bộ hóa các tệp trên lệnh của bạn, theo định kỳ, theo lịch hoặc theo thời gian thực (khi thay đổi tệp).

Bạn chỉ cần GoodSync được thiết lập trên một trong các PC của bạn; nó xử lý đồng bộ hai chiều và loại đồng bộ hóa nó có thể tùy chỉnh. Ngoài ra, nó rất được khuyến khích bởi CNet.


Xin chào Jon, bạn có thể chỉnh sửa câu trả lời của mình để giải thích tại sao GoodSync sẽ là giải pháp lý tưởng cho OP không? Ngay bây giờ, nó là một câu trả lời chất lượng rất thấp, và không thực sự trả lời các cách của câu hỏi. Cảm ơn
Canada Luke REINSTATE MONICA

1

Một giải pháp khả thi khác là AeroFS .

AeroFS đồng bộ hai chiều dữ liệu giữa các thiết bị của bạn trong khi chỉ lưu trữ dữ liệu của bạn trên thiết bị - dữ liệu của bạn không bao giờ đến gần máy chủ của chúng. AeroFS duy trì lịch sử sửa đổi cho các tệp của bạn để bạn có thể trở lại các phiên bản trước đó khi cần thiết và nó cung cấp một công cụ để giải quyết xung đột.

AeroFS hoạt động trên Windows, Mac, Linux, iOS và Android, vì vậy nó sẽ giúp bạn bảo vệ.


0

Vì vậy, nếu bạn không phản đối việc lưu trữ đám mây theo nguyên tắc, có hai giải pháp phần cứng cho các ổ đĩa ngoài:

Space khỉ sử dụng một mô hình thú vị .. nó phân bổ một phần đĩa của bạn để lưu trữ những mẩu dữ liệu nhỏ của người khác và cũng lưu trữ dữ liệu của bạn trên nhiều ổ đĩa của người khác (tất nhiên là được mã hóa). Theo cách đó, có rất nhiều sự dư thừa trong trường hợp thảm họa và các máy của bạn không cần phải có thể nhìn thấy nhau hoặc thậm chí được kết nối cùng một lúc.

Trình vận chuyển tệp đơn giản hơn một chút, trong đó dữ liệu chỉ được đồng bộ hóa trên các ổ đĩa vận chuyển tệp khác mà bạn thiết lập cụ thể để đồng bộ hóa.

Cả hai tùy chọn đều tốt cho số lượng lớn dữ liệu và bạn chỉ cần mua phần cứng một lần mà không phải trả phí đăng ký.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.