Cách rsync với Android


50

Làm cách nào tôi có thể kết nối với thiết bị Android của mình với nhạc rsync (hoặc các nội dung khác)?


Tôi khuyên bạn nên chỉnh sửa điều này để giải thích chính xác hành động nào tạo ra thông báo lỗi đó. (Ví dụ: nếu đó là đầu ra của một lệnh, bạn có thể bao gồm toàn bộ lệnh.)
Eliah Kagan

1
có thể thú vị: Syncopoli
DJCrashdummy

@DJCrashdummy nếu bạn viết bình luận của bạn dưới dạng câu trả lời, tôi sẽ bình chọn nó.
guettli

@guettli tôi chỉ viết bài này dưới dạng bình luận, vì Syncopoli chỉ là ứng dụng khách rsync (hiện tại).
DJCrashdummy

Câu trả lời:


50

Thực tế sử dụng rsync qua MTP / usb

Thật dễ dàng hơn mọi người đang nói, trước tiên hãy lưu ý rằng khi GVFS gắn kết MTP, nó sẽ có sẵn. Bạn có thể buộc điều này bằng cách mở điện thoại lên trong trình duyệt tệp đồ họa (thunar / nautilus / etc)

/run/user/$UID/gvfs

đi vào đó Giả sử bạn có một thiết bị mtp, điều này sẽ hoạt động:

$ cd /run/user/$UID/gvfs/mtp*

Tìm nơi bạn muốn chuyển các tệp quá, và sau đó rsync chúng vào nó

$ cd SanDisk\ SD\ card/Movies/

$ pwd # prints "/run/user/1000/gvfs/mtp:host=%5Busb%3A003%2C096%5D/SanDisk SD card/Movies"

$ rsync --verbose --progress --omit-dir-times --no-perms --recursive --inplace ~/Videos/ ./

Tùy chọn Rsync

  • --inplace: Tôi đánh giá cao đề nghị sử dụng --inplacemà không có MTP có thể muốn sao chép các tập tin mới, và sau đó đổi tên nó thành cái cũ. Điều đó có thể dẫn đến việc sao chép tệp vào thẻ SD hai lần: một lần để chuyển mtp sang thẻ SD và lần khác vì trình điều khiển MTP có thể không hỗ trợ (mv), nên có thể (cp / rm) dưới mui xe được an toàn .
  • đọc man rsync để mô tả --verbose, --progress, --recursivenhưng họ đang khá tự tài liệu.
  • --omit-dir-times --no-perms được yêu cầu vì mtp không hỗ trợ điều đó.

3
Tôi thêm các tùy chọn sau --omit-dir-times --no-perms --ignore-existing. Rsync không đặt dấu thời gian thư mục trên MTP. Tôi khá chắc chắn rằng "không có quyền" là mặc định, nhưng tôi muốn chỉ định nó. Bỏ qua các tập tin hiện có cho phép nó chọn nơi nó rời đi.
Stephen Ostermiller

4
Tại sao --ignore-existing? Đó chỉ là mất đi sự dư thừa. Bạn luôn có thể --size-onlylàm giảm đồng bộ hóa vào danh sách thư mục và không kiểm tra tổng. Tôi sẽ thêm --omit-dir-times--no-permsbởi vì điều đó nghe có vẻ hữu ích và dường như tôi nhớ lại việc nhận được một lỗi ở cuối về điều đó.
Evan Carroll

Rsync có vấn đề khi đặt tem thời gian trên MTP đúng cách cho tôi, do đó, không có --ignore-existingcố gắng đồng bộ hóa tất cả các tệp. Tôi thích --size-onlyđề nghị của bạn . Thay vào đó tôi sẽ thử điều đó vào lần tới.
Stephen Ostermiller

3
Tôi cũng sử dụng đặt dấu gạch chéo vào đích để tôi không phải sử dụng một ngôi sao trên nguồn:~/Videos/ ./
Stephen Ostermiller

Tôi cũng đã phải thêm '--delete-after' để có được nó để xóa các tệp tôi đã xóa khỏi thư mục nhạc trên máy tính. Vì vậy, lệnh đầy đủ là: rsync --verbose --proceed --omit-dir-times --no-perms --recursive --inplace --ignore-tồn tại --delete-after / home / user / MUSIC /.
happyskeptic

39

Sử dụng sshelper

Tôi tìm thấy giải pháp này:

  • Cài đặt sshelper trên thiết bị (không cần thiết bị root, có sẵn từ google play market)
  • Trong mạng WLAN của tôi, thiết bị được gọi là "android". Nhưng bạn có thể sử dụng IP, nếu bạn không thể đặt tên cho thiết bị.

Chỉnh sửa ssh-config cục bộ, để thay đổi cổng mặc định cho máy chủ "android"

.ssh/config
host android
    Port 2222
  • Bắt đầu sshelper trên thiết bị.
  • Kết nối thiết bị Android với mạng WLAN của bạn.

rsync -rvlc Âm nhạc android: SDCardLink /

Cập nhật Tôi biết -rvlctrước -avì bạn nhận được rất nhiều cảnh báo vì việc đặt quyền và tem thời gian không hoạt động. Tùy chọn -clàm cho đồng bộ thứ hai nhanh hơn nhiều.

Tôi biết -rvl --size-onlytrước -avì bạn nhận được rất nhiều cảnh báo vì việc đặt quyền và tem thời gian không hoạt động. Tùy chọn --size-onlylàm cho đồng bộ thứ hai nhanh hơn nhiều.

Thật không may, nó cần một chút thời gian để các ứng dụng âm nhạc nhìn thấy các tập tin mới. Khởi động lại thiết bị giúp.


13
Một cách khác để sử dụng rsync với SSHelper mà không phải sửa đổi .ssh / config: rsync -avz -e 'ssh -p 2222' Music android:SDCardLink/( stackoverflow.com/a/4630407/399105 )
bmaupin

1
@guettli tùy chọn nào cho -c checksum để đồng bộ hóa tệp nhạc? điều này có thể chậm lại đáng kể
EdiD

5
@guettli từ rsync man: -c, --checksum. Nếu không có tùy chọn này, rsync sử dụng "kiểm tra nhanh" (theo mặc định) kiểm tra xem kích thước và thời gian sửa đổi lần cuối của mỗi tệp có khớp giữa người gửi và người nhận hay không. Tùy chọn này thay đổi điều này để so sánh tổng kiểm tra 128 bit cho mỗi tệp có kích thước phù hợp. Tạo tổng kiểm tra có nghĩa là cả hai bên sẽ tiêu tốn rất nhiều đĩa I / O đọc tất cả dữ liệu trong các tệp trong quá trình chuyển, do đó, điều này có thể làm mọi thứ chậm lại đáng kể.
EdiD

4
@guettli Tôi đoán đó --size-onlysẽ là giải pháp nhanh nhất. Tuy nhiên, nó không quá tiết kiệm như-c
niels

2
Tôi đã sử dụng kết nối USB và nhận được chuyển khoản nhanh hơn nhiều. Lệnh sau hoạt động với tôi sau khi tôi chạy SSHelp và nó hiển thị IP 192.168.1.5có thể khác nhau mọi lúc:rsync -avzhP --inplace --info=progress2 -e 'ssh -p 2222' 192.168.1.5:/storage/emulated/0/DCIM/Camera/ /home/username/path/to/pics/
Nghiện hữu cơ

3

Sao lưu rsync cho Android có thể được cấu hình để đồng bộ hóa ngược lại, đó là từ máy chủ Linux sang thiết bị Android.

Và với sự trợ giúp từ LlamaLab Automate, người ta có thể định cấu hình thiết bị Android thành rsync tự động trong các điều kiện cụ thể, ví dụ:

  1. lúc 5 giờ sáng
  2. khi điện thoại được kết nối với một Wi-Fi cụ thể và
  3. khi nó đang sạc
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.