Par*_*dox 6 linux backup debian rsync mtp
为了使用 定期备份我的手机(Samsung A5 2016 或SM-A510F
)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/
Run Code Online (Sandbox Code Playgroud)
1000
显然,是我用户的 UIDmtp\: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)
Run Code Online (Sandbox Code Playgroud)
但这些数字令人难以置信,因为在大多数情况下,系统似乎处于空闲状态,等待下一个文件传输。
$ 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
Run Code Online (Sandbox Code Playgroud)
更新:我dstat
在卸载并重新安装 MTP 设备后又运行了一次,它开始更快,大部分时间又回到空闲状态。
$ 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
Run Code Online (Sandbox Code Playgroud)
我想知道是否一切正常,以及,无论哪种方式,为什么 MTP 传输如此缓慢,尤其是通过rsync
.
按照这个速度,备份我的手机数据似乎需要几个小时(没有以前的备份),这不是我真正可以做的完全备份。对于增量备份,这可能是可以接受的,但这不是这里的问题。
作为记录,上次我尝试使用 Shotwell 等工具备份我的照片(这是前一段时间),似乎并没有花费很长时间(但我并没有很密切地关注它)。
jmtpfs
FUSE 安装他们的 MTP 设备,但并非总是没有问题。gvfs
是libmtp
在幕后使用。$ uname -svro
Linux 4.9.0-8-amd64 #1 SMP Debian 4.9.144-3.1 (2019-02-19) GNU/Linux
Run Code Online (Sandbox Code Playgroud)
$ lsusb | grep MTP
Bus 002 Device 018: ID 04e8:6860 Samsung Electronics Co., Ltd Galaxy (MTP)
Run Code Online (Sandbox Code Playgroud)
$ 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
Run Code Online (Sandbox Code Playgroud)
我手机上的数据写在sdc1
硬盘的唯一分区上。
如您所见,sda
是根文件系统和交换所在的位置(以及此处无关的其他分区,sda3
以及sda4
),而sdb
专用于我的home
目录。
MTP 是一种古老的协议,手机制造商很懒,通常会实现参考实现(发货速度很快!)。MTP 很慢,因为它一开始就设计得很快。
除此之外,rsync 需要遍历所有文件来找到它们,以便将其与现有文件进行比较,并且由于驱动程序尝试将文件列表模拟为文件系统,因此您还可以在点击实际的 MTP 列表之前添加更多层,这也需要时间。对于 rsync 找到的每个文件,它都会添加到要复制的文件列表中,并重新估计剩余时间。找到下一个发现,列表会变长,估计也会增加。
也许将所有图像复制到临时文件夹,然后在临时文件夹和存储文件夹之间进行 rsync?
归档时间: |
|
查看次数: |
1852 次 |
最近记录: |