SM-A510F
私の携帯電話(Samsung A5 2016程度)の定期バックアップを使用するには、rsync
次のコマンドを使用しました。
rsync --verbose --progress --omit-dir-times --no-perms --recursive --inplace --progress /run/user/1000/gvfs/mtp\:host\=%5Busb%3A002%2C018%5D/Phone/ /data/phone_back_folder/
1000
明らかに私のユーザーのUIDはmtp\:host\=%5Busb%3A002%2C018%5D
インストール時に電話に提供された一時的なMTPホスト名(デバイスがインストールされるたびに何らかの形で変更されます)。--omit-dir-times
--no-perms
MTPは明らかにこれをしないので、ここにあります。
対応するフラグを使用するため、--progress
各ファイルの予想転送速度を確認できます。たとえば、次のようになります。
Phone/DCIM/Camera/20180408_184356.jpg
2,814,075 100% 16.58MB/s 0:00:00 (xfr#265, to-chk=821/1262)
しかし、ほとんどの場合、システムは次のファイル転送を待ち、アイドル状態のように見えるため、この数字は本当に驚くべきことです。
$ dstat -cd --disk-util --disk-tps
----total-cpu-usage---- -dsk/total- sda--sdb--sdc- -dsk/total-
usr sys idl wai hiq siq| read writ|util:util:util|reads writs
6 1 93 0 0 0| 344k 166k|0.03:0.37:1.43| 5 6
2 0 98 0 0 0|4096B 0 | 0: 0: 0| 0 0
3 0 97 0 0 0| 0 52k| 0:1.20: 0| 0 2
13 1 87 0 0 0| 0 0 | 0: 0: 0| 0 0
3 1 96 0 0 0| 0 0 | 0: 0: 0| 0 0
3 0 97 0 0 0| 0 152k|0.80: 0: 0| 0 2
3 0 97 0 0 0| 0 648k| 0:3.20: 0| 0 78
4 0 96 0 0 0| 0 0 | 0: 0: 0| 0 0
3 0 97 0 0 0| 0 0 | 0: 0: 0| 0 0
7 1 92 0 0 0| 0 0 | 0: 0: 0| 0 0
5 0 94 0 0 0| 0 0 | 0: 0: 0| 0 0
6 1 94 0 0 0| 0 12k| 0:0.40: 0| 0 2
6 1 93 0 0 0| 0 0 | 0: 0: 0| 0 0
6 0 94 0 0 0| 0 0 | 0: 0: 0| 0 0
7 1 91 0 0 0| 0 188k| 0:0.80: 0| 0 3
4 1 95 0 0 0| 0 0 | 0: 0: 0| 0 0
4 0 96 0 0 0|4096B 44M|8.80: 0: 0| 1 189
7 1 92 0 0 0| 0 172k| 0:3.20: 0| 0 18
6 1 93 0 0 0| 0 0 | 0: 0: 0| 0 0
3 0 96 0 0 0| 0 0 | 0: 0: 0| 0 0
6 1 93 0 0 0| 0 0 | 0: 0: 0| 0 0
6 0 93 0 0 0| 0 0 | 0: 0: 0| 0 0
7 2 91 0 0 0| 0 116k| 0:0.80: 0| 0 4
5 1 94 0 0 0| 0 0 | 0: 0: 0| 0 0
3 1 96 0 0 0| 0 0 | 0: 0: 0| 0 0
4 0 96 0 0 0| 0 0 | 0: 0: 0| 0 0
4 1 95 0 0 0| 0 0 | 0: 0: 0| 0 0
5 0 94 0 0 0| 0 0 | 0: 0: 0| 0 0
5 0 94 0 0 0| 0 224k| 0:0.80: 0| 0 3
5 1 93 0 0 0| 0 0 | 0: 0: 0| 0 0
5 1 95 0 0 0| 0 0 | 0: 0: 0| 0 0
12 3 85 0 0 0| 0 0 | 0: 0: 0| 0 0
8 1 91 0 0 0| 0 604k| 0: 0: 0| 0 59
5 0 94 0 0 0| 0 84k| 0:1.20: 0| 0 2
5 0 94 0 0 0| 0 0 | 0: 0: 0| 0 0
4 0 96 0 0 0| 0 0 | 0: 0: 0| 0 0
3 0 97 0 0 0| 0 0 | 0: 0: 0| 0 0
アップデート:MTPデバイスをアンインストールして再インストールした後、再起動したところ、より速く起動し、dstat
ほとんどの時間アイドル状態に戻りました。
$ dstat -cd --disk-util --disk-tps
----total-cpu-usage---- -dsk/total- sda--sdb--sdc- -dsk/total-
usr sys idl wai hiq siq| read writ|util:util:util|reads writs
5 1 94 0 0 0| 219k 603k|0.02:0.36:1.59| 3 7
6 3 90 1 0 0| 12k 25M| 0: 0:12.8| 3 44
5 2 86 7 0 0| 0 41M| 0: 0:64.0| 0 68
5 3 92 0 0 0|4096B 2744k| 0:2.00:1.60| 1 101
5 2 92 0 0 0| 20k 0 | 0: 0:3.60| 5 0
5 2 92 0 0 0| 16k 0 | 0: 0:2.40| 4 0
6 3 90 1 0 0| 12k 17M| 0: 0:14.0| 3 27
5 2 78 14 0 0| 12k 69M| 0: 0:92.0| 3 113
7 2 90 0 0 0| 12k 0 | 0: 0:2.80| 3 0
5 3 92 0 0 0| 12k 68k| 0:0.40:2.00| 3 2
6 2 92 0 0 0| 20k 0 | 0: 0:2.40| 5 0
5 2 94 0 0 0|4096B 0 | 0: 0:0.80| 1 0
3 1 91 5 0 0| 0 62M| 0: 0:45.2| 0 106
4 1 90 6 0 0| 0 2500k| 0:1.20:49.6| 0 67
4 1 95 0 0 0| 0 104k| 0:0.40: 0| 0 2
4 1 95 0 0 0| 0 192k| 0:0.80: 0| 0 3
4 2 94 0 0 0| 0 28k|0.40: 0: 0| 0 3
4 1 95 0 0 0| 0 40k| 0: 0:2.40| 0 2
4 1 95 0 0 0| 0 0 | 0: 0: 0| 0 0
4 2 94 0 0 0| 0 0 | 0: 0: 0| 0 0
4 1 95 0 0 0| 0 48k| 0:0.40: 0| 0 2
3 1 95 0 0 0| 0 16k| 0: 0: 0| 0 4
4 1 95 0 0 0| 0 0 | 0: 0: 0| 0 0
4 1 96 0 0 0| 0 0 | 0: 0: 0| 0 0
4 2 94 0 0 0| 0 332k| 0: 0: 0| 0 59
4 1 95 0 0 0| 0 0 | 0: 0: 0| 0 0
3 1 96 0 0 0| 0 0 | 0: 0: 0| 0 0
4 2 95 0 0 0| 0 16k| 0:0.80: 0| 0 2
3 1 96 0 0 0| 0 0 | 0: 0:38.4| 0 0
6 2 92 0 0 0| 0 104k| 0: 0:10.4| 0 14
5 2 93 0 0 0| 0 0 | 0: 0: 0| 0 0
4 1 95 0 0 0| 0 0 | 0: 0: 0| 0 0
3 1 95 0 0 0| 0 448k| 0: 0: 0| 0 1
3 1 95 0 0 0| 0 48k| 0:0.80: 0| 0 2
3 1 96 0 0 0| 0 32k| 0: 0: 0| 0 7
4 1 94 0 0 0| 0 548k| 0:2.00: 0| 0 66
4 1 95 0 0 0| 0 92k| 0:1.60: 0| 0 9
3 1 96 0 0 0| 0 28k| 0:1.20: 0| 0 3
7 1 92 0 0 0| 0 0 | 0: 0: 0| 0 0
3 2 95 0 0 0| 0 0 | 0: 0: 0| 0 0
3 1 96 0 0 0| 0 0 | 0: 0: 0| 0 0
3 1 96 0 0 0| 0 384k| 0: 0: 0| 0 44
4 2 95 0 0 0| 0 60k| 0:0.80: 0| 0 2
3 1 96 0 0 0| 0 0 | 0: 0:2.40| 0 0
3 1 96 0 0 0| 0 2560k| 0: 0:47.6| 0 5
4 2 94 0 0 0| 0 0 | 0: 0: 0| 0 0
3 2 95 0 0 0| 0 520k| 0:0.40: 0| 0 48
3 1 96 0 0 0| 0 0 | 0: 0: 0| 0 0
すべてがうまくいくか、そしてどちらにしてもMTP転送が特にrsync
。
この速度では(以前のバックアップなしで)携帯電話のデータをバックアップするのに数時間かかりますが、これは実際に私ができるフルバックアップではありません。これは増分バックアップには許可されますが、ここでは問題ではありません。
ちなみに、前回Shotwellのようなツールを使って写真のバックアップを試みたとき(しばらく前)、時間がそれほど長くかかっていなかったようです(しかし大きく気にしませんでした)。
- MTPアクセスを処理するために他のライブラリを使用する以外に何が違いますか?
- LinuxのMTPサポートの現在の状態は何ですか? FUSEを使ってMTPデバイスをインストールする人がいるという話を聞きましたが、必ずしも
jmtpfs
問題がないわけではありません。 - 私が間違っている場合は訂正してください。しかし、
gvfs
それはlibmtp
後ろで使用されているようです。
システムと機械の詳細
$ uname -svro
Linux 4.9.0-8-amd64 #1 SMP Debian 4.9.144-3.1 (2019-02-19) GNU/Linux
$ lsusb | grep MTP
Bus 002 Device 018: ID 04e8:6860 Samsung Electronics Co., Ltd Galaxy (MTP)
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 238.5G 0 disk
├─sda1 8:1 0 107.8G 0 part /
├─sda2 8:2 0 13.5G 0 part [SWAP]
├─sda3 8:3 0 500M 0 part
└─sda4 8:4 0 116.7G 0 part
sdb 8:16 0 119.2G 0 disk
└─sdb1 8:17 0 119.2G 0 part /home
sdc 8:32 0 2.7T 0 disk
└─sdc1 8:33 0 2.7T 0 part /data
私の携帯電話のデータは、
sdc1
ハードドライブの唯一のパーティションに書き込まれます。ご覧のとおり、これはルートファイルシステムとスワップ領域(およびこれに
sda
関連しない他のパーティション)がある場所ですが、私のディレクトリ専用です。sda3
sda4
sdb
home
答え1
MTPは古いプロトコルであり、携帯電話メーカーは怠惰で一般的に参照実装を実装しています(非常に高速です!)。 MTPは最初から早く設計されているので遅いです。
さらに、rsyncは既存のファイルと比較するためにすべてのファイルを検索する必要があり、ドライバはファイルリストをファイルシステムにエミュレートしようとするため、実際のMTPリストに到達する前に追加することもできます。複数のレイヤーを使用すると時間がかかります。 rsyncが見つかった各ファイルについて、コピーするファイルのリストに追加され、残りの時間が再推定されます。次の発見が見つかると、リストが長くなり、見積もりが増えます。
すべての画像を一時フォルダにコピーし、一時フォルダと保存フォルダの間で再同期しますか?
答え2
rsyncは、open(2)、lseek(2)、read(2)、write(2)などのシステムコールでPOSIXストリームベースの入出力モデルを使用しますが、MTPはより高いレベルのオブジェクトベースのプロトコルです。 「オブジェクトのコピー」などの操作。 MTPは部分的に変更されたファイルのサポートを欠いているため、そのPOSIX機能を非効率的にシミュレートするにはMTPプロトコル手段を使用する必要があります。
多数のファイルをMTPドライブにコピーするには、GNOMEファイルマネージャを使用し、フォルダを右クリックして[コピー先]を選択することをお勧めします。これはより高いレベルのMTPファイルコピー操作を使用し、rsyncよりはるかに高速です。
この互換性の理由(ファイル名、権限、タイムスタンプなど)のため、MTPはLinuxシステムのデータをバックアップするのには適していません。