Làm cách nào tôi có thể đồng bộ thư mục nhà của mình qua mạng và internet?


8

Tôi sử dụng máy tính xách tay của mình với máy tính để bàn Ubuntu để thực hiện tất cả công việc của mình, nhưng tôi cũng có một máy tính để bàn cấp thấp ở văn phòng của tôi chỉ ngồi đó. Tôi đã quyết định tôi sẽ cài đặt máy chủ Ubuntu trên nó và sử dụng nó để phản chiếu toàn bộ thư mục máy tính xách tay của tôi, để giúp mọi việc dễ dàng hơn khi tôi quyết định định dạng đĩa cứng của máy tính xách tay.

Bất cứ khi nào tôi làm việc, cả hai máy đều được kết nối với mạng và liên lạc dễ dàng (và tốc độ cao) qua ssh. Khi tôi không làm việc, máy tính để bàn vẫn có thể truy cập thông qua ssh. Lý tưởng nhất là việc đồng bộ hóa sẽ diễn ra tự động trong nền, bất cứ khi nào tôi thay đổi điều gì đó. Nó chỉ cần là một cách: những thay đổi tôi thực hiện trên máy tính xách tay phải được đồng bộ hóa với máy chủ, nhưng điều ngược lại là không cần thiết.

Tôi biết có phần mềm cho việc này ngoài kia, câu hỏi của tôi là: Tôi có thể sử dụng phần mềm nào để đạt được các mục tiêu trên và cũng tận dụng tối đa tốc độ mạng cục bộ khi tôi đang làm việc? Vì đôi khi tôi sẽ xử lý các tệp lớn, quá trình đồng bộ hóa cần nhận ra rằng hai máy tính đang chia sẻ mạng cục bộ và sau đó tận dụng lợi thế đó (thay vì luôn đồng bộ hóa qua internet).

Rõ ràng, đồng bộ hóa qua mạng thực sự quan trọng đối với tôi ở đây hơn là đồng bộ hóa qua internet. Tôi lý tưởng là phần mềm sẽ kiểm tra xem cái trước có sẵn không và nếu không, hãy thử cái sau; nhưng nếu điều đó là không thể, trường hợp đầu tiên là ưu tiên của tôi.

Hy vọng điều này không quá dài. Cảm ơn trước.

Câu trả lời:


11

Nếu bạn chỉ có thể kết nối với máy chủ văn phòng của mình qua SSH, thì lựa chọn tốt nhất của bạn là sử dụng rsync : nó có thể sử dụng SSH làm giao thức vận chuyển và sử dụng thuật toán thông minh để tăng tốc độ truyền tệp lớn, bằng cách chỉ gửi các khối đã thay đổi.

Vì bạn chỉ cần đồng bộ hóa một chiều, chỉ cần thiết lập xác thực SSH không mật khẩu từ máy tính xách tay của bạn đến máy chủ văn phòng, sau đó bạn có thể bắt đầu bằng một lệnh đơn giản như:

rsync -e ssh -a $HOME/ myuser@officeserv:

thêm --include--excludecác tùy chọn để tinh chỉnh danh sách các tập tin / thư mục mà bạn muốn đồng bộ hóa. Chẳng hạn, việc chuyển cài đặt chương trình ("tệp chấm") có thể gặp rủi ro nếu hai máy tính không chạy cùng một hệ điều hành (cùng phiên bản). Đề nghị của tôi là bắt đầu bằng cách loại trừ tất cả "tệp chấm" (vì vậy, sử dụng --exclude="$HOME/.[a-z]*") và sau đó chọn lọc thêm các thư mục cấu hình của các chương trình có thể được chia sẻ một cách an toàn (điều này phải được nhìn thấy trên chương trình theo chương trình). Ngoài ra, bộ nhớ cache của trình duyệt web và $HOME/.cacheluôn có thể được loại trừ. Xem phần "QUY TẮC LỌC" trong rsynctrang hướng dẫn để thảo luận chi tiết về cú pháp quy tắc bao gồm / loại trừ.

Tuy nhiên, rsynckhông có chế độ "hoạt động liên tục", vì vậy bạn sẽ phải chạy định kỳ từ crontab của mình .


Nghe được đấy. Tôi sẽ kiểm tra nó ngay khi tôi cài đặt máy chủ. Một câu hỏi: giao thức SSH có tự động sử dụng kết nối ngắn nhất tới máy chủ không? Ý tôi là: nó sẽ kết nối qua mạng cục bộ nếu cả máy khách và máy chủ đều nằm trong mạng văn phòng, hay nó sẽ luôn thử kết nối internet?
Malabarba

Nhân tiện, bạn đã đúng về bộ đệm của trình duyệt. Bất kỳ đề nghị khác của các thư mục tôi nên loại trừ? Mục tiêu của tôi là đồng bộ tất cả các tệp cá nhân, hồ sơ, cài đặt và tệp cấu hình.
Malabarba

1
@Bruce Connor: SSH sẽ kết nối với máy chủ từ xa bằng thuật toán định tuyến IP thông thường. Cập nhật văn bản trả lời với đề xuất cho một danh sách loại trừ ban đầu.
Riccardo Murri

Cảm ơn. Để tránh xung đột, tôi có thể đồng bộ thư mục nhà của máy tính xách tay của mình với thư mục con trong máy chủ (chứ không phải thư mục nhà thực tế của máy chủ).
Malabarba

@riccardomurri bởi "xác thực SSH không mật khẩu", ý bạn là dựa trên keyfile? hay cái gì khác?
david.libremone

3

Tôi sẽ đề nghị sử dụng sao lưu dự phòng trên rsync. Nó khá nhiều chỉ là rsync ++.

không giống như rsync chỉ là gương 1-1 truyền khác biệt, rsync có cơ chế lịch sử. Vì vậy, nếu bạn làm hỏng và xóa một cái gì đó quan trọng, bạn có thể quay trở lại một tuần trước và lấy lại.

Trên "máy chủ" Ubuntu, bạn chỉ cần chạy ssh để cài đặt apt-get install.

trên máy khách. Tôi sẽ chạy nó bằng tay .. hoặc thông qua một crontab.

#!/bin/bash

  #backup.sh

  rdiff-backup -v5 --exclude path-to-annoyingfile  /home/user/ hostname::/media/data/snapshots/laptop 
  ## this will cleanup any backups older then 2weeks.  Adjust this as needed.
  rdiff-backup --remove-older-than  2W --force  hostname::/media/data/snapshots/laptop


  #!/bin/bash
  ##Restore.
  rdiff-backup -v5 --restore-as-of now --force user@hostname::/media/data/snapshots/laptop  /home/user

Nếu bạn mở cổng 22 của mình lên internet .. bạn sẽ có thể chạy cùng một kịch bản theo bất kỳ cách nào .. chỉ cần tên máy chủ của bạn giải quyết cục bộ thành IP cục bộ của bạn.

I E. backupSrv.penguins.org sẽ phân giải thành IP bên ngoài của. 2.3.4.5 nhưng bên trong lan của bạn: tới 192.168.1.253


Tôi nghĩ rằng kịch bản của bạn đang thiếu một vài ngắt dòng.
Malabarba

2

Không có giải pháp hoàn chỉnh, đóng gói sẵn cho vấn đề của bạn mà tôi biết. Bạn có thể phải tự viết một số kịch bản nhỏ cho điều đó.

Việc đồng bộ hóa có thể được thực hiện bởi rsync, như đã được giải thích bởi Riccardo Murri. Rsync chỉ chuyển các phần đã thay đổi của tệp, vì vậy nó hoàn hảo cho tác vụ này.

Bạn có thể sử dụng NetworkManagerDispatcher để thực thi các tập lệnh khi kết nối / ngắt kết nối giao diện mạng. Vì vậy, bạn có thể viết một tập lệnh kiểm tra xem bạn có ở đúng mạng không và sau đó gọi rsync. Bằng cách này, dữ liệu của bạn sẽ được tự động đồng bộ hóa khi bạn kết nối với mạng công ty.

Để định kỳ đồng bộ hóa dữ liệu của bạn, bạn có thể sử dụng cron, như đã đề cập.

Bạn cũng nên xem xét bảo mật khi sử dụng rsync qua ssh. Để đồng bộ hóa mà không cần sự can thiệp của người dùng, bạn sẽ cần một keyfile không mật khẩu. Bất cứ ai có keyfile này đều có thể truy cập vào máy chủ mà nó thuộc về. Tôi thực sự khuyên bạn nên mã hóa thư mục nhà của bạn để bảo vệ dữ liệu trên máy tính xách tay và trên máy chủ.


1

DropBox | DropBox @ SuperUser http://www.dropbox.com/help/137

DropBox phải tốt trong trường hợp của bạn, hoạt động trên Linux, mac, windows, dễ dàng thiết lập và quản lý.

Tải xuống DropBox

/superuser/147315/dropbox-to-sync-nix-home- Folders

http://wiki.dropbox.com/TipsAndTricks/SyncOtherFolders

Hãy đọc qua - nó hỗ trợ đồng bộ hóa qua các liên kết tượng trưng và nếu có tài liệu, đồ họa, bảng tính nhất định bạn phải đồng bộ hóa - bạn vẫn có thể duy trì một bản sao của chúng trong dropbox hoặc lưu chúng vĩnh viễn vào vị trí dropbox để lưu lại rắc rối.


Tôi không tin rằng bạn có thể đặt Dropbox thành thư mục Home của mình (ít nhất là chưa).
Matthew

superuser.com/questions/147315/dropbox-to-sync-nix-home- Folders wiki.dropbox.com/TipsAndTricks/SyncOtherFolders Có đọc qua - nó hỗ trợ đồng bộ hóa qua symlink và nếu có tài liệu, đồ họa, bảng tính nhất định phải đồng bộ hóa - bạn vẫn có thể duy trì một bản sao của chúng trong dropbox hoặc lưu chúng vĩnh viễn vào vị trí dropbox để lưu lại rắc rối.
rihatum

1
Cảm ơn, nhưng tôi đã sử dụng dropbox trên các nền tảng. Thứ tôi đang tìm kiếm ở đây là thứ cho phép tôi đồng bộ nhiều GB tệp mà không mất phí và tận dụng các mạng cục bộ.
Malabarba

1

Hãy dùng thử Spark Meatare: http : // spark Meatare.org/

Có một ứng dụng khách trong repo Ubuntu và nó có hướng dẫn về cách thiết lập máy chủ trên trang web của họ.


trông giống như một chương trình tuyệt vời - giải pháp ít hack nhất; phiên bản 1.0 đã được phát hành vào tháng trước.
Abe

0

Giải pháp tốt nhất cho năm 2015 nên là Seafile: https://www.seafile.com/en/doad/

Các nhà phát triển Spark Meatare cho biết bản thân công cụ của họ tốt cho nhiều tệp nhỏ và đặc biệt là các tệp văn bản, nhưng không tốt cho các tệp lớn hơn và nhị phân ..

Và về mặt hiệu suất, nó vượt trội hơn cả Spark Meatare và owncloud.

Ngoài ra, nó còn ít ressource đói hơn so với ownCloud - vì vậy một phiên bản có thể chạy trên Banana hoặc Raspberry mà không gặp vấn đề gì như một máy tính chạy 24/7. (Tuy nhiên, tôi muốn giới thiệu Banana Pi, vì mạng Gigabit và giao diện SATA, nó là một lựa chọn tốt cho máy chủ tệp ít nhất là đối với tôi.)

Tôi đồng bộ các thư mục nhà của tôi với ba máy tính. Tôi loại trừ dotfiles, chúng được xử lý qua repo git và một số logic xung quanh bởi vì - như Ricardo đã đề cập - có một số vấn đề trong việc chia sẻ dotfiles và cấu hình khác trên các máy tính khác nhau, ngay cả khi cùng hệ điều hành và phát hành. Ví dụ, hãy suy nghĩ về Monitor.xml hoặc một số bố cục khác nhau cho IDE trên máy tính xách tay và máy tính để bàn đa màn hình của bạn - hoặc một chương trình được mở trên cả hai máy tính.

Ngoài việc đồng bộ hóa, tôi sao lưu dữ liệu này - thông qua borgbackup. Đây là một chương trình sao lưu mới rất hay, không trùng lặp, rất nhanh sau lần sao lưu ban đầu và có rất nhiều tính năng mà nhiều công cụ còn thiếu.

Đó là thiết lập hoàn hảo cho tôi.

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.