Cara rsync ke android


50

Bagaimana saya bisa terhubung ke perangkat android saya ke musik rsync (atau hal lain)?


Saya sarankan mengedit ini untuk menjelaskan tindakan apa yang menghasilkan pesan kesalahan itu. (Misalnya, jika itu adalah hasil dari sebuah perintah, Anda dapat memasukkan perintah lengkap.)
Eliah Kagan

1
mungkin menarik: Syncopoli
DJCrashdummy

@DJCrashdummy jika Anda menulis komentar sebagai jawaban, saya akan memilihnya.
guettli

@guettli saya menulis ini hanya sebagai komentar, karena Syncopoli hanyalah klien rsync (untuk saat ini).
DJCrashdummy

Jawaban:


50

Sebenarnya menggunakan rsync melalui MTP / usb

Ini lebih mudah daripada semua orang mengatakan, pemberitahuan pertama bahwa ketika GVFS me-mount MTP mount akan tersedia di bawah. Anda dapat memaksanya dengan membuka telepon di peramban file grafis (thunar / nautilus / etc)

/run/user/$UID/gvfs

masuk ke sana. Dengan asumsi Anda memiliki satu perangkat mtp, ini seharusnya berfungsi:

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

Temukan di mana Anda ingin mentransfer file juga, dan kemudian rsync mereka ke sana

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

Opsi rsync

  • --inplace: Saya sangat menyarankan menggunakan --inplacetanpa yang mtp mungkin ingin menyalin file yang baru, dan kemudian ganti namanya menjadi yang lama. Itu dapat mengakibatkan menyalin file ke kartu SD dua kali: satu kali untuk transfer mtp ke kartu SD, dan lain kali karena driver MTP mungkin tidak mendukung (mv), mungkin (cp / rm) di bawah tenda untuk aman .
  • baca man rsync untuk deskripsi --verbose, --progress, --recursivetapi mereka cukup mendokumentasikan diri.
  • --omit-dir-times --no-perms diperlukan karena mtp tidak mendukungnya.

3
Saya menambahkan opsi berikut --omit-dir-times --no-perms --ignore-existing. Rsync gagal mengatur cap waktu direktori di atas MTP. Saya cukup yakin bahwa "tidak ada izin" adalah default, tetapi saya ingin menentukannya. Mengabaikan file yang ada memungkinkan untuk mengambil di mana file itu ditinggalkan.
Stephen Ostermiller

4
Mengapa --ignore-existing? Itu hanya kehilangan kelebihan. Anda selalu dapat --size-onlymengurangi sinkronisasi ke daftar direktori dan bukan checksum. Saya akan menambahkan --omit-dir-timesdan --no-permskarena itu terdengar bermanfaat, dan saya ingat untuk mendapatkan kesalahan pada akhirnya tentang itu.
Evan Carroll

Rsync memiliki masalah mengatur stempel waktu pada MTP dengan benar untuk saya, jadi tanpa --ignore-existingitu mencoba menyinkronkan semua file. Saya suka --size-onlysaran Anda . Saya akan coba itu lain kali.
Stephen Ostermiller

3
Saya juga menggunakan meletakkan garis miring pada tujuan jadi saya tidak perlu menggunakan bintang pada sumber:~/Videos/ ./
Stephen Ostermiller

Saya juga harus menambahkan '--delete-after' untuk menghapus file yang sudah saya hapus dari folder musik di komputer. Jadi perintah lengkapnya adalah: rsync --verbose --progress --omit-dir-times --no-perms --recursive --inplace --ignore-existing --delete-after / home / user / MUSIC /.
happyskeptic

39

Menggunakan sshelper

Saya menemukan solusi ini:

  • Instal sshelper di perangkat (tidak diperlukan perangkat yang di-rooting, tersedia dari pasar google play)
  • Di WLAN saya perangkat disebut "android". Tetapi Anda dapat menggunakan IP, jika Anda tidak dapat memberikan nama host perangkat.

Edit ssh-config lokal, untuk mengubah port default untuk host "android"

.ssh/config
host android
    Port 2222
  • Mulai sshelper di perangkat.
  • Hubungkan perangkat android ke WLAN Anda.

rsync -rvlc Music android: SDCardLink /

Memperbarui Saya lebih menyukai -rvlcuntuk -akarena Anda mendapatkan banyak peringatan sejak pengaturan hak akses dan waktu-prangko tidak bekerja. Opsi ini -cmembuat sinkronisasi kedua lebih cepat.

Saya lebih menyukai -rvl --size-onlyuntuk -akarena Anda mendapatkan banyak peringatan sejak pengaturan hak akses dan waktu-prangko tidak bekerja. Opsi ini --size-onlymembuat sinkronisasi kedua lebih cepat.

Sayangnya perlu beberapa saat bagi aplikasi musik untuk melihat file baru. Restart perangkat membantu.


13
Cara alternatif untuk menggunakan rsync dengan SSHelper tanpa harus memodifikasi .ssh / config: rsync -avz -e 'ssh -p 2222' Music android:SDCardLink/( stackoverflow.com/a/4630407/399105 )
bmaupin

1
@guettli untuk apa opsi -c checksum untuk menyinkronkan file musik? ini dapat melambat secara signifikan
EdiD

5
@guettli dari rsync man: -c, --checksum. Tanpa opsi ini, rsync menggunakan "pemeriksaan cepat" yang (secara default) memeriksa apakah setiap ukuran file dan waktu modifikasi terakhir cocok antara pengirim dan penerima. Opsi ini mengubah ini untuk membandingkan checksum 128-bit untuk setiap file yang memiliki ukuran yang cocok. Menghasilkan checksum berarti bahwa kedua belah pihak akan menghabiskan banyak disk I / O membaca semua data dalam file dalam transfer, sehingga ini dapat memperlambat segalanya secara signifikan.
EdiD

4
@guettli Saya kira itu --size-onlyakan menjadi solusi tercepat. Namun itu tidak begitu menghemat-c
niels

2
Saya menggunakan tethering USB dan mendapat transfer yang jauh lebih cepat. Perintah berikut ini bekerja untuk saya setelah saya menjalankan SSHelp dan itu menunjukkan IP 192.168.1.5yang mungkin berbeda setiap kali:rsync -avzhP --inplace --info=progress2 -e 'ssh -p 2222' 192.168.1.5:/storage/emulated/0/DCIM/Camera/ /home/username/path/to/pics/
Organic Addict

3

cadangan rsync untuk Android dapat dikonfigurasi untuk menyinkronkan secara terbalik, yaitu dari host Linux ke perangkat Android.

Dan dengan bantuan LlamaLab Automate, seseorang dapat mengonfigurasi perangkat Android untuk rsync secara otomatis pada kondisi tertentu, misalnya:

  1. jam 5 pagi,
  2. ketika ponsel terhubung ke Wi-Fi tertentu, dan
  3. ketika sedang diisi.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.