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.)
@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
--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.
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 /
MemperbaruiSaya 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.
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:
Jawaban:
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)
masuk ke sana. Dengan asumsi Anda memiliki satu perangkat mtp, ini seharusnya berfungsi:
Temukan di mana Anda ingin mentransfer file juga, dan kemudian rsync mereka ke sana
Opsi rsync
--inplace
: Saya sangat menyarankan menggunakan--inplace
tanpa 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 .--verbose
,--progress
,--recursive
tapi mereka cukup mendokumentasikan diri.--omit-dir-times
--no-perms
diperlukan karena mtp tidak mendukungnya.sumber
--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.--ignore-existing
? Itu hanya kehilangan kelebihan. Anda selalu dapat--size-only
mengurangi sinkronisasi ke daftar direktori dan bukan checksum. Saya akan menambahkan--omit-dir-times
dan--no-perms
karena itu terdengar bermanfaat, dan saya ingat untuk mendapatkan kesalahan pada akhirnya tentang itu.--ignore-existing
itu mencoba menyinkronkan semua file. Saya suka--size-only
saran Anda . Saya akan coba itu lain kali.~/Videos/ ./
Menggunakan sshelper
Saya menemukan solusi ini:
Edit ssh-config lokal, untuk mengubah port default untuk host "android"
Memperbarui
Saya lebih menyukai-rvlc
untuk-a
karena Anda mendapatkan banyak peringatan sejak pengaturan hak akses dan waktu-prangko tidak bekerja. Opsi ini-c
membuat sinkronisasi kedua lebih cepat.Saya lebih menyukai
-rvl --size-only
untuk-a
karena Anda mendapatkan banyak peringatan sejak pengaturan hak akses dan waktu-prangko tidak bekerja. Opsi ini--size-only
membuat sinkronisasi kedua lebih cepat.Sayangnya perlu beberapa saat bagi aplikasi musik untuk melihat file baru. Restart perangkat membantu.
sumber
rsync -avz -e 'ssh -p 2222' Music android:SDCardLink/
( stackoverflow.com/a/4630407/399105 )--size-only
akan menjadi solusi tercepat. Namun itu tidak begitu menghemat-c
192.168.1.5
yang 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/
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:
sumber