วิธีการ rsync กับ Android


50

ฉันจะเชื่อมต่ออุปกรณ์ Android ของฉันกับเพลง rsync (หรือสิ่งอื่น ๆ ) ได้อย่างไร?


ฉันขอแนะนำให้แก้ไขสิ่งนี้เพื่ออธิบายว่าการกระทำใดที่ทำให้เกิดข้อความแสดงข้อผิดพลาด (ตัวอย่างเช่นหากมันเป็นผลลัพธ์ของคำสั่งคุณสามารถรวมคำสั่งแบบเต็มได้)
Eliah Kagan

1
อาจจะน่าสนใจ: Syncopoli
DJCrashdummy

@DJCrashdummy หากคุณเขียนความคิดเห็นของคุณเป็นคำตอบฉันจะลงคะแนนให้
guettli

@guettli ฉันเขียนสิ่งนี้เป็นความคิดเห็นเท่านั้นเนื่องจากSyncopoliเป็นเพียง rsync-client (ตอนนี้)
DJCrashdummy

คำตอบ:


50

ใช้ rsync จริงผ่าน MTP / usb

มันง่ายกว่าที่ทุกคนพูดก่อนอื่นให้สังเกตว่าเมื่อ GVFS เมานท์ MTP เมานท์มันจะพร้อมใช้งาน คุณสามารถบังคับได้โดยเปิดโทรศัพท์ขึ้นในไฟล์กราฟิก - เบราว์เซอร์ (thunar / nautilus / etc)

/run/user/$UID/gvfs

เข้าไปข้างใน สมมติว่าคุณมีอุปกรณ์ mtp หนึ่งตัวสิ่งนี้ควรใช้งานได้:

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

ค้นหาตำแหน่งที่คุณต้องการถ่ายโอนไฟล์ด้วยแล้ว rsync ไฟล์เหล่านั้น

$ 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/ ./

ตัวเลือก Rsync

  • --inplace: ฉันขอแนะนำให้ใช้--inplaceหากไม่มี mtp ที่อาจต้องการคัดลอกไฟล์ใหม่แล้วเปลี่ยนชื่อเป็นไฟล์เก่า ซึ่งอาจส่งผลให้คัดลอกไฟล์ไปยังการ์ด SD สองครั้ง: หนึ่งครั้งสำหรับการถ่ายโอน mtp ไปยังการ์ด SD และอีกครั้งเพราะไดรเวอร์ MTP อาจไม่รองรับ (mv) อาจ (cp / rm) ใต้ฝากระโปรงเพื่อความปลอดภัย .
  • อ่านคน rsync สำหรับคำอธิบายของ--verbose, --progress, --recursiveแต่พวกเขากำลังสวยเอกสารด้วยตนเอง
  • --omit-dir-times --no-perms เป็นสิ่งจำเป็นเนื่องจาก mtp ไม่รองรับสิ่งนั้น

3
--omit-dir-times --no-perms --ignore-existingฉันจะเพิ่มตัวเลือกต่อไป Rsync ไม่สามารถตั้งค่าการประทับเวลาของไดเรกทอรีผ่าน MTP ฉันค่อนข้างมั่นใจว่า "ไม่มีการอนุญาต" เป็นค่าเริ่มต้น แต่ฉันต้องการระบุ การเพิกเฉยไฟล์ที่มีอยู่จะช่วยให้สามารถเลือกได้ว่าจะทิ้งที่ไหน
Stephen Ostermiller

4
ทำไม--ignore-existing? นั่นเป็นเพียงการสูญเสียความซ้ำซ้อน คุณสามารถ--size-onlyลดการซิงค์ลงในรายชื่อไดเรกทอรีได้ตลอดเวลา ฉันจะเพิ่ม--omit-dir-timesและ--no-permsเพราะนั่นฟังดูมีประโยชน์และฉันดูเหมือนจะจำได้ว่าได้รับข้อผิดพลาดในตอนท้ายเกี่ยวกับเรื่องนั้น
Evan Carroll

Rsync มีปัญหาในการตั้งค่าการประทับเวลาบน MTP อย่างถูกต้องสำหรับฉันดังนั้นหากไม่มีความ--ignore-existingพยายามในการซิงค์ไฟล์ทั้งหมด ฉันชอบ--size-onlyคำแนะนำของคุณ ฉันจะลองอีกครั้งแทน
Stephen Ostermiller

3
ฉันยังใช้ใส่เครื่องหมายทับบนปลายทางดังนั้นฉันไม่ต้องใช้ดาวบนแหล่งที่มา:~/Videos/ ./
สตีเฟ่น Ostermiller

ฉันต้องเพิ่ม '- ลบหลังจาก' เพื่อลบไฟล์ที่ฉันลบไปแล้วจากโฟลเดอร์เพลงในคอมพิวเตอร์ ดังนั้นคำสั่งทั้งหมดคือ: rsync --verbose --progress --omit-dir-times - no-perms --recursive - inplace --ignore-existing --delete-after / home / user / MUSIC /
happyskeptic

39

ใช้ sshelper

ฉันพบวิธีแก้ปัญหานี้:

  • ติดตั้งsshelperบนอุปกรณ์ (ไม่จำเป็นต้องใช้อุปกรณ์รูท, พร้อมใช้งานจากตลาด google play)
  • ใน WLAN ของฉันอุปกรณ์นั้นเรียกว่า "android" แต่คุณสามารถใช้ IP ได้หากคุณไม่สามารถให้ชื่อโฮสต์แก่อุปกรณ์ได้

แก้ไข local ssh-config เพื่อเปลี่ยนพอร์ตเริ่มต้นสำหรับโฮสต์ "android"

.ssh/config
host android
    Port 2222
  • เริ่ม sshelper บนอุปกรณ์
  • เชื่อมต่ออุปกรณ์ android กับ WLAN ของคุณ

rsync -rvlc Music android: SDCardLink /

ปรับปรุง ฉัน prefere -rvlcไป-aตั้งแต่ที่คุณได้รับจำนวนมากของคำเตือนตั้งแต่การตั้งค่าสิทธิ์และใช้เวลาแสตมป์ไม่ทำงาน ตัวเลือก-cทำให้การซิงค์ที่สองเร็วขึ้นมาก

ฉัน prefere -rvl --size-onlyไป-aตั้งแต่ที่คุณได้รับจำนวนมากของคำเตือนตั้งแต่การตั้งค่าสิทธิ์และใช้เวลาแสตมป์ไม่ทำงาน ตัวเลือก--size-onlyทำให้การซิงค์ที่สองเร็วขึ้นมาก

น่าเสียดายที่มันต้องใช้เวลาพอสมควรสำหรับแอปเพลงเพื่อดูไฟล์ใหม่ การรีสตาร์ทอุปกรณ์ช่วย


13
อีกวิธีหนึ่งในการใช้ rsync กับ SSHelper โดยไม่ต้องแก้ไข. ssh / config: rsync -avz -e 'ssh -p 2222' Music android:SDCardLink/( stackoverflow.com/a/4630407/399105 )
bmaupin

1
@guettli สำหรับ -c checksum ตัวเลือกใดบ้างในการซิงค์ไฟล์เพลง สิ่งนี้สามารถทำให้ช้าลงอย่างมาก
EdiD

5
@guettli จาก rsync man: -c, --checksum หากไม่มีตัวเลือกนี้ rsync จะใช้ "การตรวจสอบด่วน" ที่ (โดยค่าเริ่มต้น) จะตรวจสอบว่าขนาดและเวลาของไฟล์แต่ละไฟล์ของการแก้ไขครั้งล่าสุดตรงกับผู้ส่งและผู้รับหรือไม่ ตัวเลือกนี้เปลี่ยนแปลงสิ่งนี้เพื่อเปรียบเทียบการตรวจสอบแบบ 128 บิตสำหรับแต่ละไฟล์ที่มีขนาดที่ตรงกัน การสร้างผลรวมตรวจสอบหมายความว่าทั้งสองฝ่ายจะใช้จ่ายดิสก์ I / O จำนวนมากเพื่ออ่านข้อมูลทั้งหมดในไฟล์ในการถ่ายโอนดังนั้นสิ่งนี้อาจทำให้ช้าลงอย่างมาก
EdiD

4
@ guettli ฉันเดาว่า --size-onlyจะเป็นทางออกที่เร็วที่สุด อย่างไรก็ตามมันไม่ได้ช่วยประหยัดเท่า-c
ไหร่

2
ฉันใช้การปล่อยสัญญาณผ่าน USB และถ่ายโอนได้เร็วกว่ามาก คำสั่งต่อไปนี้ทำงานให้ฉันหลังจากฉันวิ่ง SSHelp และมันแสดง IP 192.168.1.5ซึ่งอาจแตกต่างกันทุกครั้ง:rsync -avzhP --inplace --info=progress2 -e 'ssh -p 2222' 192.168.1.5:/storage/emulated/0/DCIM/Camera/ /home/username/path/to/pics/
ติดยาเสพติดอินทรีย์

3

การสำรองข้อมูล rsync สำหรับ Androidสามารถกำหนดค่าให้ซิงค์ย้อนกลับนั่นคือจากโฮสต์ Linux ไปยังอุปกรณ์ Android

และด้วยความช่วยเหลือจากLlamaLab Automateเราสามารถกำหนดค่าอุปกรณ์ Android ให้ rsync โดยอัตโนมัติตามเงื่อนไขเฉพาะเช่น:

  1. เวลา 5 โมง
  2. เมื่อโทรศัพท์เชื่อมต่อกับ Wi-Fi เฉพาะและ
  3. เมื่อมันกำลังชาร์จ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.