Benjamin-Loison / android

0 stars 0 forks source link

Backup identical device copy #46

Open Benjamin-Loison opened 5 months ago

Benjamin-Loison commented 5 months ago

Shortcut to main comment: #issuecomment-2282294748 or the following #issuecomment-2282299708 to easily scroll to the end of the main one.

Related to Benjamin-Loison/timeshift/issues/9 and:

-----BEGIN PGP MESSAGE-----

hF4DTQa9Wom5MBgSAQdAyrvowUITimioFT84O4Gte2nP3JJDT9oa6XIevDpG7nYw
wa6ofaLH2sA2Jaxn7srJOS6QtSWuqtUpnvnXdIzGQUZOZjMEC+Rz834baSNBq9bZ
0nsBRkAOFElpblmT9y8gEU8a3Jng+vmUsKpMbxp6tUX2ARxuT6dR3tVnZ3dgjJI3
b1Dh3sy/6zkhDYMClU9ZUAWJa6eeitIOq8rqw6TFsI3VsV8Gk/uBOOwqMPDqE0pL
u8pR577VMo2ENvQ66PILOq1ms84jK5qMZBrTjHs=
=N9Sz
-----END PGP MESSAGE-----
Benjamin-Loison commented 3 months ago

https://docs.waydro.id/faq/backup-restore-apps-and-data may help to some extent.

Benjamin-Loison commented 3 months ago

Related to Benjamin_Loison/coreutils/issues/{1,2}.

Benjamin-Loison commented 2 months ago

Related to Benjamin_Loison/WhatsApp/issues/15.

Benjamin-Loison commented 2 months ago

See:

-----BEGIN PGP MESSAGE-----

hF4DTQa9Wom5MBgSAQdAii+8J/IYAcFRl6hPNm1UMh9dnrkayDtSui/D6NjnQSow
xTnuG+DauWcbPZwfwtzrNuf+qfe9v++e7Toq+qre+1B7u0eC22TXJMSIqosC26eg
0nABDHaXdNTSxqw7zDhQThi7vkknxJAqlg6E8jqj42Vwwm1M40bRDOLx0PjNicF5
fpy0CkIMKcGb2jILhSK3XTom45wmHJKoy3fhNCip8OT5ba0/zbqTXrc7n5+KL/CP
x8KoToTUUCEBLAh/Y/zS4LjW
=mLU5
-----END PGP MESSAGE-----

on my Linux Mint 22 Cinnamon Framework 13.

Benjamin-Loison commented 2 months ago

The Android Stack Exchange answer 120158 helps us know when an app was first installed. The Android Stack Exchange answer 116633 helps us know when an app was last used.

Benjamin-Loison commented 2 months ago

Is not there an app to copy everything from a phone to another and temporarily store them if same phone? Like Samsung swap or similar if I remember correctly.

Benjamin-Loison commented 2 months ago

Tracked at Benjamin_Loison/seedvault/issues/6.

Settings > System > Backup > Seedvault Backup. Note Backup status and > Expert settings > Device-to-device backups.

See Benjamin_Loison/seedvault/issues/7.

Related to Benjamin_Loison/seedvault/issues/1 and Benjamin_Loison/WhatsApp/issues/6.

Probably have to disable App backup if restore on Waydroid as by default CPU architecture differs.

Could test SeedVault backup by having in addition an sda dd copy (that way can extract sda11, then use sda if still failing) and app by app backup. To verify the backup can either uninstall apps and their data or even factory reset from LineageOS which would be a more correct test. Note that if I buy a Fairphone 5 restoring user data partition not be a good idea anyway, so in such case would leverage SeedVault or app by app. However, note that factory reset may reset some device specific constant and restoring user-data could break some stuff.

Could even factory reset from recovery to make it in theory stronger, to potentially restore Fairphone OS and have to re-install LineageOS.

Benjamin-Loison commented 2 months ago

Take screenshots of my Special boot modes, see https://wiki.lineageos.org/devices/FP4/.

Benjamin-Loison commented 2 months ago

image

Note the UNKONW typo.

"Press volume key to select, and press power" LineageOS does not seem to return any source code on both DuckDuckGo and Google.

image

image

image

image

image

image

image

image

image

image

image

image

image

image

So seems to be able to start ADB without booting LineageOS.

Maybe this meta menu is only working within memory, hence with dd maybe can save and change it too, hence modify the whole phone.

Benjamin-Loison commented 2 months ago

Can verify that able to restore backed up data correctly with Waydroid, see https://xdaforums.com/t/guide-running-your-android-device-on-a-virtual-machine.2084016/. However, note that Waydroid does not have dialer and messaging apps as far as I remember.

Benjamin-Loison commented 2 months ago

Maybe a dd backup works fine on the given phone but on another one with same specs may not work. Should test modifying an app, an app state and a system setting to see if they are restored well. Note that for some apps such as Signal it may be possible that such a backup break them somehow.

From recovery:

adb shell whoami
root
adb shell df -h
Filesystem      Size Used Avail Use% Mounted on
rootfs          3.5G  34M  3.4G   1% /
tmpfs           3.6G 3.7M  3.6G   1% /dev
tmpfs           3.6G    0  3.6G   0% /mnt
tmpfs           3.6G    0  3.6G   0% /apex
tmpfs           3.6G 4.0K  3.6G   1% /linkerconfig
tmpfs           3.6G  32K  3.6G   1% /tmp
tmpfs           3.6G    0  3.6G   0% /storage

After Mount/unmount system:

adb shell df -h
Filesystem      Size Used Avail Use% Mounted on
rootfs          3.5G  34M  3.4G   1% /
tmpfs           3.6G 3.7M  3.6G   1% /dev
tmpfs           3.6G    0  3.6G   0% /mnt
tmpfs           3.6G    0  3.6G   0% /apex
tmpfs           3.6G 4.0K  3.6G   1% /linkerconfig
tmpfs           3.6G  32K  3.6G   1% /tmp
tmpfs           3.6G    0  3.6G   0% /storage
/dev/block/dm-2 999M 907M   91M  91% /mnt/system
adb shell ls -lh /dev/block/
Output: ``` total 0 lrwxrwxrwx 1 root root 37 1970-12-19 23:23 bootdevice -> /dev/block/platform/soc/1d84000.ufshc drwxr-xr-x 2 root root 1.9K 1970-12-19 23:23 by-name brw------- 1 root root 253, 0 1970-12-19 23:25 dm-0 brw------- 1 root root 253, 1 1970-12-19 23:25 dm-1 brw------- 1 root root 253, 2 1970-12-19 23:25 dm-2 brw------- 1 root root 253, 3 1970-12-19 23:25 dm-3 brw------- 1 root root 253, 4 1970-12-19 23:25 dm-4 brw------- 1 root root 253, 5 1970-12-19 23:25 dm-5 brw------- 1 root root 253, 6 1970-12-19 23:25 dm-6 brw------- 1 root root 253, 7 1970-12-19 23:25 dm-7 brw------- 1 root root 7, 0 1970-12-19 23:23 loop0 brw------- 1 root root 7, 8 1970-12-19 23:23 loop1 brw------- 1 root root 7, 80 1970-12-19 23:23 loop10 brw------- 1 root root 7, 88 1970-12-19 23:23 loop11 brw------- 1 root root 7, 96 1970-12-19 23:23 loop12 brw------- 1 root root 7, 104 1970-12-19 23:23 loop13 brw------- 1 root root 7, 112 1970-12-19 23:23 loop14 brw------- 1 root root 7, 120 1970-12-19 23:23 loop15 brw------- 1 root root 7, 16 1970-12-19 23:23 loop2 brw------- 1 root root 7, 24 1970-12-19 23:23 loop3 brw------- 1 root root 7, 32 1970-12-19 23:23 loop4 brw------- 1 root root 7, 40 1970-12-19 23:23 loop5 brw------- 1 root root 7, 48 1970-12-19 23:23 loop6 brw------- 1 root root 7, 56 1970-12-19 23:23 loop7 brw------- 1 root root 7, 64 1970-12-19 23:23 loop8 brw------- 1 root root 7, 72 1970-12-19 23:23 loop9 drwxr-xr-x 3 root root 220 1970-12-19 23:25 mapper drwxr-xr-x 3 root root 60 1970-12-19 23:23 platform brw------- 1 root root 1, 0 1970-12-19 23:23 ram0 brw------- 1 root root 1, 1 1970-12-19 23:23 ram1 brw------- 1 root root 1, 10 1970-12-19 23:23 ram10 brw------- 1 root root 1, 11 1970-12-19 23:23 ram11 brw------- 1 root root 1, 12 1970-12-19 23:23 ram12 brw------- 1 root root 1, 13 1970-12-19 23:23 ram13 brw------- 1 root root 1, 14 1970-12-19 23:23 ram14 brw------- 1 root root 1, 15 1970-12-19 23:23 ram15 brw------- 1 root root 1, 2 1970-12-19 23:23 ram2 brw------- 1 root root 1, 3 1970-12-19 23:23 ram3 brw------- 1 root root 1, 4 1970-12-19 23:23 ram4 brw------- 1 root root 1, 5 1970-12-19 23:23 ram5 brw------- 1 root root 1, 6 1970-12-19 23:23 ram6 brw------- 1 root root 1, 7 1970-12-19 23:23 ram7 brw------- 1 root root 1, 8 1970-12-19 23:23 ram8 brw------- 1 root root 1, 9 1970-12-19 23:23 ram9 brw------- 1 root root 8, 0 1970-12-19 23:23 sda brw------- 1 root root 8, 1 1970-12-19 23:23 sda1 brw------- 1 root root 8, 10 1970-12-19 23:23 sda10 brw------- 1 root root 8, 11 1970-12-19 23:23 sda11 brw------- 1 root root 8, 2 1970-12-19 23:23 sda2 brw------- 1 root root 8, 3 1970-12-19 23:23 sda3 brw------- 1 root root 8, 4 1970-12-19 23:25 sda4 brw------- 1 root root 8, 5 1970-12-19 23:23 sda5 brw------- 1 root root 8, 6 1970-12-19 23:23 sda6 brw------- 1 root root 8, 7 1970-12-19 23:25 sda7 brw------- 1 root root 8, 8 1970-12-19 23:23 sda8 brw------- 1 root root 8, 9 1970-12-19 23:23 sda9 brw------- 1 root root 8, 16 1970-12-19 23:23 sdb brw------- 1 root root 8, 17 1970-12-19 23:23 sdb1 brw------- 1 root root 8, 18 1970-12-19 23:23 sdb2 brw------- 1 root root 8, 32 1970-12-19 23:23 sdc brw------- 1 root root 8, 33 1970-12-19 23:23 sdc1 brw------- 1 root root 8, 34 1970-12-19 23:23 sdc2 brw------- 1 root root 8, 48 1970-12-19 23:23 sdd brw------- 1 root root 8, 49 1970-12-19 23:23 sdd1 brw------- 1 root root 8, 50 1970-12-19 23:23 sdd2 brw------- 1 root root 8, 51 1970-12-19 23:23 sdd3 brw------- 1 root root 8, 64 1970-12-19 23:23 sde brw------- 1 root root 8, 65 1970-12-19 23:23 sde1 brw------- 1 root root 8, 74 1970-12-19 23:23 sde10 brw------- 1 root root 8, 75 1970-12-19 23:23 sde11 brw------- 1 root root 8, 76 1970-12-19 23:23 sde12 brw------- 1 root root 8, 77 1970-12-19 23:23 sde13 brw------- 1 root root 8, 78 1970-12-19 23:23 sde14 brw------- 1 root root 8, 79 1970-12-19 23:23 sde15 brw------- 1 root root 259, 0 1970-12-19 23:23 sde16 brw------- 1 root root 259, 1 1970-12-19 23:23 sde17 brw------- 1 root root 259, 2 1970-12-19 23:23 sde18 brw------- 1 root root 259, 3 1970-12-19 23:23 sde19 brw------- 1 root root 8, 66 1970-12-19 23:23 sde2 brw------- 1 root root 259, 4 1970-12-19 23:23 sde20 brw------- 1 root root 259, 5 1970-12-19 23:23 sde21 brw------- 1 root root 259, 6 1970-12-19 23:23 sde22 brw------- 1 root root 259, 7 1970-12-19 23:23 sde23 brw------- 1 root root 259, 8 1970-12-19 23:23 sde24 brw------- 1 root root 259, 9 1970-12-19 23:23 sde25 brw------- 1 root root 259, 10 1970-12-19 23:23 sde26 brw------- 1 root root 259, 11 1970-12-19 23:23 sde27 brw------- 1 root root 259, 12 1970-12-19 23:23 sde28 brw------- 1 root root 259, 13 1970-12-19 23:23 sde29 brw------- 1 root root 8, 67 1970-12-19 23:23 sde3 brw------- 1 root root 259, 14 1970-12-19 23:23 sde30 brw------- 1 root root 259, 15 1970-12-19 23:23 sde31 brw------- 1 root root 259, 16 1970-12-19 23:23 sde32 brw------- 1 root root 259, 17 1970-12-19 23:23 sde33 brw------- 1 root root 259, 18 1970-12-19 23:23 sde34 brw------- 1 root root 259, 19 1970-12-19 23:23 sde35 brw------- 1 root root 259, 20 1970-12-19 23:23 sde36 brw------- 1 root root 259, 21 1970-12-19 23:23 sde37 brw------- 1 root root 259, 22 1970-12-19 23:23 sde38 brw------- 1 root root 259, 23 1970-12-19 23:23 sde39 brw------- 1 root root 8, 68 1970-12-19 23:23 sde4 brw------- 1 root root 259, 24 1970-12-19 23:23 sde40 brw------- 1 root root 259, 25 1970-12-19 23:23 sde41 brw------- 1 root root 259, 26 1970-12-19 23:23 sde42 brw------- 1 root root 259, 27 1970-12-19 23:23 sde43 brw------- 1 root root 259, 28 1970-12-19 23:23 sde44 brw------- 1 root root 259, 29 1970-12-19 23:23 sde45 brw------- 1 root root 259, 30 1970-12-19 23:23 sde46 brw------- 1 root root 259, 31 1970-12-19 23:23 sde47 brw------- 1 root root 259, 32 1970-12-19 23:23 sde48 brw------- 1 root root 259, 33 1970-12-19 23:23 sde49 brw------- 1 root root 8, 69 1970-12-19 23:23 sde5 brw------- 1 root root 259, 34 1970-12-19 23:23 sde50 brw------- 1 root root 259, 35 1970-12-19 23:23 sde51 brw------- 1 root root 259, 36 1970-12-19 23:23 sde52 brw------- 1 root root 259, 37 1970-12-19 23:23 sde53 brw------- 1 root root 259, 38 1970-12-19 23:23 sde54 brw------- 1 root root 259, 39 1970-12-19 23:23 sde55 brw------- 1 root root 259, 40 1970-12-19 23:23 sde56 brw------- 1 root root 259, 41 1970-12-19 23:23 sde57 brw------- 1 root root 259, 42 1970-12-19 23:23 sde58 brw------- 1 root root 259, 43 1970-12-19 23:23 sde59 brw------- 1 root root 8, 70 1970-12-19 23:23 sde6 brw------- 1 root root 259, 44 1970-12-19 23:23 sde60 brw------- 1 root root 259, 45 1970-12-19 23:23 sde61 brw------- 1 root root 259, 46 1970-12-19 23:23 sde62 brw------- 1 root root 259, 47 1970-12-19 23:23 sde63 brw------- 1 root root 259, 48 1970-12-19 23:23 sde64 brw------- 1 root root 259, 49 1970-12-19 23:23 sde65 brw------- 1 root root 259, 50 1970-12-19 23:23 sde66 brw------- 1 root root 8, 71 1970-12-19 23:23 sde7 brw------- 1 root root 8, 72 1970-12-19 23:23 sde8 brw------- 1 root root 8, 73 1970-12-19 23:23 sde9 brw------- 1 root root 8, 80 1970-12-19 23:23 sdf brw------- 1 root root 8, 81 1970-12-19 23:23 sdf1 brw------- 1 root root 8, 82 1970-12-19 23:23 sdf2 brw------- 1 root root 8, 83 1970-12-19 23:23 sdf3 brw------- 1 root root 8, 84 1970-12-19 23:23 sdf4 brw------- 1 root root 8, 85 1970-12-19 23:23 sdf5 brw------- 1 root root 8, 86 1970-12-19 23:23 sdf6 brw------- 1 root root 8, 87 1970-12-19 23:23 sdf7 brw------- 1 root root 8, 88 1970-12-19 23:23 sdf8 brw------- 1 root root 8, 89 1970-12-19 23:23 sdf9 brw------- 1 root root 8, 96 1970-12-19 23:23 sdg drwxr-xr-x 2 root root 40 1970-12-19 23:23 volmgr brw------- 1 root root 254, 0 1970-12-19 23:23 zram0 ```

Source: the Stack Overflow answer 41422730

After Mount/umount system:

diff a b
52c52
< brw------- 1 root root   8,   4 1970-12-19 23:28 sda4
---
> brw------- 1 root root   8,   4 1970-12-19 23:25 sda4
147c147
< brw------- 1 root root 254,   0 1970-12-19 23:23 zram0
---
> brw------- 1 root root 254,   0 1970-12-19 23:23 zram0
\ No newline at end of file

Added After dd. to Add text on lock screen. touch after_dd on Termux. New folder after_dd in Files. Installed ProtonVPN app.

The Stack Overflow comment 47115600:

mount
rootfs on / type rootfs (rw,seclabel,size=3685400k,nr_inodes=921350)
tmpfs on /dev type tmpfs (rw,seclabel,nosuid,relatime,size=3825520k,nr_inodes=956380,mode=755)
devpts on /dev/pts type devpts (rw,seclabel,relatime,mode=600,ptmxmode=000)
proc on /proc type proc (rw,relatime,gid=3009,hidepid=2)
sysfs on /sys type sysfs (rw,seclabel,relatime)
selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)
tmpfs on /mnt type tmpfs (rw,seclabel,nosuid,nodev,noexec,relatime,size=3825520k,nr_inodes=956380,mode=755,gid=1000)
tmpfs on /apex type tmpfs (rw,seclabel,nosuid,nodev,noexec,relatime,size=3825520k,nr_inodes=956380,mode=755)
tmpfs on /linkerconfig type tmpfs (rw,seclabel,nosuid,nodev,noexec,relatime,size=3825520k,nr_inodes=956380,mode=755)
tmpfs on /mnt/installer type tmpfs (rw,seclabel,nosuid,nodev,noexec,relatime,size=3825520k,nr_inodes=956380,mode=755,gid=1000)
tmpfs on /mnt/androidwritable type tmpfs (rw,seclabel,nosuid,nodev,noexec,relatime,size=3825520k,nr_inodes=956380,mode=755,gid=1000)
none on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime)
tmpfs on /tmp type tmpfs (rw,seclabel,relatime,size=3825520k,nr_inodes=956380)
tmpfs on /storage type tmpfs (rw,seclabel,relatime,size=3825520k,nr_inodes=956380,mode=050,gid=1028)
binder on /dev/binderfs type binder (rw,relatime,max=1048576,stats=global)
none on /config type configfs (rw,relatime)
adb on /dev/usb-ffs/adb type functionfs (rw,relatime)
fastboot on /dev/usb-ffs/fastboot type functionfs (rw,relatime)
ls -l /dev/block/bootdevice/by-name/userdata
lrwxrwxrwx 1 root root 16 1970-12-22 07:42 /dev/block/bootdevice/by-name/userdata -> /dev/block/sda11
ls -l /dev/block/sda11      
brw------- 1 root root 8,  11 1970-12-22 07:42 /dev/block/sda11
ls /dev/block/mmcblk0
ls: /dev/block/mmcblk0: No such file or directory
adb pull /dev/block/sda11; matrix-commander -m 'adb copy finished!'
[   ?] /dev/block/sda11: 660799488/?
adb help
file transfer:
 push [--sync] [-z ALGORITHM] [-Z] LOCAL... REMOTE
     copy local files/directories to device
     --sync: only push files that are newer on the host than the device
     -n: dry run: push files to device without storing to the filesystem
     -z: enable compression with a specified algorithm (any/none/brotli/lz4/zstd)
     -Z: disable compression
 pull [-a] [-z ALGORITHM] [-Z] REMOTE... LOCAL
     copy files/dirs from device
     -a: preserve file timestamp and mode
     -z: enable compression with a specified algorithm (any/none/brotli/lz4/zstd)
     -Z: disable compression
 sync [-l] [-z ALGORITHM] [-Z] [all|data|odm|oem|product|system|system_ext|vendor]
     sync a local build from $ANDROID_PRODUCT_OUT to the device (default all)
     -n: dry run: push files to device without storing to the filesystem
     -l: list files that would be copied, but don't copy them
     -z: enable compression with a specified algorithm (any/none/brotli/lz4/zstd)
     -Z: disable compression
adb shell cat /dev/block/sda11 | pv -s 256G > sda11; matrix-commander -m 'adb copy finished!'
 470MiB 0:00:14 [34.7MiB/s] [>                                                                                           ]   0% ETA 2:09:55

Ongoing:

ls -lh
total 2.4G
-rw-rw-r--  1 benjamin benjamin 2.4G Aug 13 12:02  sda11
adb shell cat /dev/block/sda11 | pv -s 256G > sda11
 175GiB 1:28:52 [33.7MiB/s] [=============================================================>                              ]  68%
ls -l sda11
-rw-rw-r-- 1 benjamin benjamin 188195950592 Aug 13 13:34 sda11

Once rebooted:

df -h
Filesystem        Size Used Avail Use% Mounted on
/dev/block/dm-2   999M 907M   75M  93% /
tmpfs             3.6G 3.9M  3.6G   1% /dev
tmpfs             3.6G    0  3.6G   0% /mnt
/dev/block/dm-3   476M 388M   78M  84% /system_ext
/dev/block/dm-1   1.5G 474M  1.0G  30% /product
/dev/block/dm-4   656M 654M     0 100% /vendor
/dev/block/dm-0   1.3M 1.3M     0 100% /odm
tmpfs             3.6G  12K  3.6G   1% /apex
/dev/block/loop4  1.1M 1.1M  8.0K 100% /apex/com.android.rkpd@350090000
/dev/block/loop3  3.6M 3.6M     0 100% /apex/com.android.os.statsd@350090000
/dev/block/loop5   11M  11M     0 100% /apex/com.android.healthfitness@350090000
/dev/block/loop6   22M  22M     0 100% /apex/com.android.btservices@350090000
/dev/block/loop7  328K 296K   28K  92% /apex/com.android.virt@2
/dev/block/loop8  760K 732K   16K  98% /apex/com.android.tzdata@350090000
/dev/block/loop10 5.5M 5.4M     0 100% /apex/com.android.devicelock@1
/dev/block/loop11 232K  96K  132K  43% /apex/com.android.apex.cts.shim@1
/dev/block/loop9   10M  10M     0 100% /apex/com.android.runtime@1
/dev/block/loop12 232K 152K   76K  67% /apex/com.android.hardware.cas@1
/dev/block/loop14  38M  38M     0 100% /apex/com.android.i18n@1
/dev/block/loop13 716K 688K   16K  98% /apex/com.android.sdkext@350090000
/dev/block/dm-38   22M  22M     0 100% /apex/com.android.permission@350090000
/dev/block/dm-39   41M  41M     0 100% /apex/com.android.art@350090000
/dev/block/dm-37  3.9M 3.9M     0 100% /apex/com.android.uwb@350090000
/dev/block/dm-36   23M  23M     0 100% /apex/com.android.extservices@350090000
/dev/block/dm-35   23M  23M     0 100% /apex/com.android.mediaprovider@350090000
/dev/block/dm-31   13M  13M     0 100% /apex/com.android.ondevicepersonalization@350090000
/dev/block/dm-34  6.2M 6.2M     0 100% /apex/com.android.media@350090000
/dev/block/dm-29  8.6M 8.6M     0 100% /apex/com.android.wifi@350090000
/dev/block/dm-27  232K 104K  124K  46% /apex/com.android.scheduling@350090000
/dev/block/dm-25  5.7M 5.7M     0 100% /apex/com.android.conscrypt@350090000
/dev/block/dm-21  756K 728K   16K  98% /apex/com.android.ipsec@350090000
/dev/block/dm-23  3.7M 3.7M     0 100% /apex/com.android.appsearch@350090000
/dev/block/dm-19   17M  17M     0 100% /apex/com.android.cellbroadcast@350090000
/dev/block/dm-18  7.4M 7.4M     0 100% /apex/com.android.neuralnetworks@350090000
/dev/block/dm-17   21M  21M     0 100% /apex/com.android.adservices@350090000
/dev/block/dm-14  7.9M 7.8M     0 100% /apex/com.android.adbd@350090000
/dev/block/dm-15   29M  29M     0 100% /apex/com.android.media.swcodec@350090000
/dev/block/dm-12  4.1M 4.0M     0 100% /apex/com.android.resolv@350090000
/dev/block/dm-11  552K 524K   20K  97% /apex/com.android.configinfrastructure@350090000
/dev/block/dm-9    20M  20M     0 100% /apex/com.android.tethering@350090000
tmpfs             3.6G 4.0K  3.6G   1% /bootstrap-apex
/dev/block/loop2  760K 732K   16K  98% /bootstrap-apex/com.android.tzdata@350090000
/dev/block/loop1   10M  10M     0 100% /bootstrap-apex/com.android.runtime@1
/dev/block/loop0   38M  38M     0 100% /bootstrap-apex/com.android.i18n@1
tmpfs             3.6G    0  3.6G   0% /tmp
/dev/block/dm-40  222G 165G   57G  75% /data
/dev/fuse         222G 165G   57G  75% /storage/emulated

Fairphone 4 is advertized as with 256 GB of storage, source: https://shop.fairphone.com/shop/buy-fairphone-4#attr=1,5.

Let us verify that the connection has not broke just at this time.

adb shell cat /dev/block/sda11 | pv -s 256G | diff sda11 -; echo $?; matrix-commander -m 'diff finished!'

On Debian 12 GNOME Pegasus having a more stable physical setup.

adb shell cat /dev/block/sda11 | pv -s 256G > sda11; matrix-commander-rs -m 'adb copy finished!'
 221GiB 1:34:43 [40.0MiB/s] [============================>     ] 86%
ls -l sda11
-rw-r--r-- 1 benjamin_loison benjamin_loison 238344658944 Aug 14 01:35 sda11

Now differing without having interacted with the phone.

adb shell cat /dev/block/sda11 | pv -s 256G | diff sda11 -; echo $?; matrix-commander -m 'diff finished!'
 221GiB 1:36:32 [39.2MiB/s] [============================>     ] 86%
0
man df
...
       The  SIZE  argument  is  an  integer and optional unit (example: 10K is
       10*1024).  Units are K,M,G,T,P,E,Z,Y  (powers  of  1024)  or  KB,MB,...
       (powers  of 1000).  Binary prefixes can be used, too: KiB=K, MiB=M, and
       so on.
...

221GiB = 221 * (1,024 ^ 3) = 237,296,943,104 which is very near to above ls -l. Due to number of GiB approximation it looks correct.

man diff
...
       [...] If a FILE is '-', read standard input.  Exit status
       is 0 if inputs are the same, 1 if different, 2 if trouble.
...

So so far so good.

Should df without -h, when system running, to be precise and compare with above.

adb shell df
Filesystem        1K-blocks      Used Available Use% Mounted on
/dev/block/dm-2     1022496    929232     76880  93% /
tmpfs               3825520      4004   3821516   1% /dev
tmpfs               3825520         0   3825520   0% /mnt
/dev/block/dm-3      487432    397652     79380  84% /system_ext
/dev/block/dm-1     1645804    485300   1144120  30% /product
/dev/block/dm-4      671284    669224         0 100% /vendor
/dev/block/dm-0        1420      1412         0 100% /odm
tmpfs               3825520        12   3825508   1% /apex
tmpfs               3825520         4   3825516   1% /bootstrap-apex
/dev/block/loop0      38504     38476         0 100% /bootstrap-apex/com.android.i18n@1
/dev/block/loop2        760       732        16  98% /bootstrap-apex/com.android.tzdata@350090000
/dev/block/loop1      10484     10444         0 100% /bootstrap-apex/com.android.runtime@1
tmpfs               3825520         0   3825520   0% /tmp
/dev/block/dm-40  232756408 174750432  57874904  76% /data
/dev/block/loop4        232       152        76  67% /apex/com.android.hardware.cas@1
/dev/block/loop3       3744      3716         0 100% /apex/com.android.os.statsd@350090000
/dev/block/loop5       1228      1196         8 100% /apex/com.android.rkpd@350090000
/dev/block/loop6        328       296        28  92% /apex/com.android.virt@2
/dev/block/loop8       5656      5628         0 100% /apex/com.android.devicelock@1
/dev/block/loop7      10484     10444         0 100% /apex/com.android.runtime@1
/dev/block/loop9      22100     22072         0 100% /apex/com.android.btservices@350090000
/dev/block/loop10       760       732        16  98% /apex/com.android.tzdata@350090000
/dev/block/dm-37       4076      4048         0 100% /apex/com.android.uwb@350090000
/dev/block/dm-29       8864      8836         0 100% /apex/com.android.wifi@350090000
/dev/block/dm-38      22268     22240         0 100% /apex/com.android.permission@350090000
/dev/block/dm-39      42064     42032         0 100% /apex/com.android.art@350090000
/dev/block/dm-34       6440      6408         0 100% /apex/com.android.media@350090000
/dev/block/dm-35      23892     23860         0 100% /apex/com.android.mediaprovider@350090000
/dev/block/dm-36      23920     23888         0 100% /apex/com.android.extservices@350090000
/dev/block/loop20     38504     38476         0 100% /apex/com.android.i18n@1
/dev/block/loop19     11148     11120         0 100% /apex/com.android.healthfitness@350090000
/dev/block/dm-31      13440     13408         0 100% /apex/com.android.ondevicepersonalization@350090000
/dev/block/loop22       716       688        16  98% /apex/com.android.sdkext@350090000
/dev/block/loop21       232        96       132  43% /apex/com.android.apex.cts.shim@1
/dev/block/dm-27        232       104       124  46% /apex/com.android.scheduling@350090000
/dev/block/dm-9       20760     20728         0 100% /apex/com.android.tethering@350090000
/dev/block/dm-23       3872      3844         0 100% /apex/com.android.appsearch@350090000
/dev/block/dm-21        756       728        16  98% /apex/com.android.ipsec@350090000
/dev/block/dm-18       7632      7604         0 100% /apex/com.android.neuralnetworks@350090000
/dev/block/dm-19      17076     17048         0 100% /apex/com.android.cellbroadcast@350090000
/dev/block/dm-17      21712     21660         0 100% /apex/com.android.adservices@350090000
/dev/block/dm-14       8112      8084         0 100% /apex/com.android.adbd@350090000
/dev/block/dm-15      29272     29244         0 100% /apex/com.android.media.swcodec@350090000
/dev/block/dm-12       4212      4180         0 100% /apex/com.android.resolv@350090000
/dev/block/dm-11        552       524        20  97% /apex/com.android.configinfrastructure@350090000
/dev/block/dm-25       5936      5908         0 100% /apex/com.android.conscrypt@350090000
/dev/fuse         232756408 174750480  57874856  76% /storage/emulated

So it seems that /data/ has 6 GB less so seems to make quite sense as there is maybe more data/metadata for the phone to work well.

From recovery:

adb shell df
Filesystem     1K-blocks  Used Available Use% Mounted on
rootfs           3685400 34976   3650424   1% /
tmpfs            3825520  3812   3821708   1% /dev
tmpfs            3825520     0   3825520   0% /mnt
tmpfs            3825520     0   3825520   0% /apex
tmpfs            3825520     4   3825516   1% /linkerconfig
tmpfs            3825520    32   3825488   1% /tmp
tmpfs            3825520     0   3825520   0% /storage

Should try diff after:

adb shell cat /dev/block/sda11 | pv -s 256G | diff sda11 -; echo $?; matrix-commander-rs -m 'diff finished!'
 221GiB 1:36:19 [39.3MiB/s] [============================================================================================================================================>                        ] 86%            
0
adb shell ls -l /dev/block/bootdevice/by-name/userdata
lrwxrwxrwx 1 root root 16 1970-12-23 10:58 /dev/block/bootdevice/by-name/userdata -> /dev/block/sda11
adb shell cat /dev/block/sda11 | pv -s 256G | diff sda11 -; echo $?; matrix-commander-rs -m 'diff finished!'
Binary files sda11 and - differ
2.07MiB 0:00:00 [23.7MiB/s] [>                                 ]  0%

So I did again:

Then can try restoring image after having modified an app, an app state and a system setting.

Added After dd. to Add text on lock screen. touch after_dd on Termux. New folder after_dd in Files. Installed ProtonVPN app.

Can verify total length if fail, that is what is we expect. Not writing to disk but just having byte precision with pv would be nice. See Benjamin_Loison/pv/issues/3.

adb shell cat /dev/block/sda11 | pv -s 256G > /dev/null
 117MiB 0:00:03 [39.7MiB/s] [>                                                                                            ]  0% ETA 1:51:32
man pv
...
       -b, --bytes
              Turn the total byte counter on.  This will display the total amount of data transferred so far.
...
       -A, --last-written NUM
              Show the last NUM bytes written - but see the caveat under %nA in the FORMATTING section below.  Implies -C.
...
       -n, --numeric
              Numeric output.  Instead of giving a visual indication of progress, pv will give an integer percentage, one per line,  on
              standard  error,  suitable for piping (via convoluted redirection) into dialog(1).  Note that -f is not required if -n is
              being used.

              Note that if --numeric is in use, then adding --bytes will cause the number of bytes processed so far to  be  output  in‐
              stead  of  a percentage; if --line-mode is also in use, then instead of bytes or a percentage, the number of lines so far
              is output.  And finally, if --timer is also in use, then each output line is prefixed with the elapsed time so far, as  a
              decimal number of seconds.
...
       -s SIZE, --size SIZE
              Assume the total amount of data to be transferred is SIZE bytes when calculating percentages and ETAs.  The same suffixes
              of "k", "m" etc can be used as with -L.
...

All above settings do not seem to help.

man pv
...
       -F, --format FORMAT
              Ignore  the  options -p, -t, -e, -r, -a, -b, -T, and -A, and instead use the format string FORMAT to determine the output
              format.  See the FORMATTING section below.
...
FORMATTING
       If the -F option is given, then the output format is determined by the given format string.  Within that string,  the  following
       sequences can be used:

       %p     Progress bar.  Expands to fill the remaining space. Should only be specified once.  Equivalent to -p.

       %t     Elapsed time.  Equivalent to -t.

       %e     ETA as time remaining.  Equivalent to -e.

       %I     ETA as local time of completion.  Equivalent to -I.

       %r     Current data transfer rate.  Equivalent to -r.

       %a     Average data transfer rate.  Equivalent to -a.

       %b     Bytes transferred so far (or lines if -l was specified).  Equivalent to -b.

       %T     Percentage  of  the  transfer  buffer  in  use.   Equivalent  to  -T.   Shows "{----}" if the transfer is being done with
              splice(2), since splicing to or from pipes does not use the buffer.

       %nA    Show the last n bytes written (e.g.  %16A for the last 16 bytes).  Shows only dots if the transfer  is  being  done  with
              splice(2), since splicing to or from pipes does not use the buffer.

       %N     Name prefix given by -N.  Padded to 9 characters with spaces, and suffixed with :.

       %%     A single %.

       The format string equivalent of turning on all display switches is `%N %b %T %t %r %a %p %e'.

COMMON SWITCHES
       Some suggested common switch combinations:

       pv -ptebar
              Show a progress bar, elapsed time, estimated completion time, byte counter, average rate, and current rate.

       pv -betlap
              Show  a  progress bar, elapsed time, estimated completion time, line counter, and average rate, counting lines instead of
              bytes.

       pv -t  Show only the elapsed time - useful as a simple timer, e.g.  sleep 10m | pv -t.

       pv -pterb
              The default behaviour: progress bar, elapsed time, estimated completion time, current rate, and byte counter.

       On MacOS, it may be useful to specify -B 1024 in a pipeline, as this may improve performance.
...

unclear how to leverage it --format.

COMMON SWITCHES does not seem to help.

Search on first pages of results of DuckDuckGo and Google Linux "pv" byte precision only bring the following result:

The SuperUser answer 568567 may help.

echo 'test' | ls -
ls: cannot access '-': No such file or directory
echo 'test' | wc -c
5
adb shell cat /dev/block/sda11 | pv -s 256G | wc -c; matrix-commander-rs -m 'wc finished!'
 193GiB 1:37:28 [38.9MiB/s] [===================================================================>            ] 86%            
238344658944

So size is identical with above but not content, so it makes sense.

adb push
adb: push requires an argument
adb push sda11 /dev/block/sda11; matrix-commander-rs -m 'push finished!'
[  2%] /dev/block/sda11

A more precise progress would be nice.

Then got:

adb: error: failed to copy 'sda11' to '/dev/block/sda11': no response: Success

without knowing the progress before the error.

Furthermore I get:

* daemon not running; starting now at tcp:5037
* daemon started successfully

afterwards when running an adb command, maybe it shows that adb server died on the computer side? I don't know if what I am writing makes sense.

Related to Benjamin_Loison/time/issues/1.

I executed again and it seems that it went fine as there was no output it seems.

So running:

time adb push sda11 /dev/block/sda11; echo $?; matrix-commander-rs -m 'push finished!'
adb: error: failed to copy 'sda11' to '/dev/block/sda11': no response: Success

real    15m16.995s
user    0m6.042s
sys 1m40.399s
1

to make sure, can diff afterwards to make sure.

adb shell cat /dev/block/sda11 | pv -s 256G | diff sda11 -; echo $?; matrix-commander-rs -m 'diff finished!'
1

So it confirms my suspicion, let us push again (does not used to have previous precise output).

error: device offline seems to happen when try an adb command while the phone screen is off due to idle, maybe replugging helps to. Maybe no response: Success has the same issue origin. Let us monitor closely when the phone has its screen off due to idling or at least when I am notified is the screen off. Let us also try to regularly turn back on the screen, as it seems that when it goes off it does not directly break the push, so maybe there is an additional timing like on computers before actually going to sleep.

When the push broke again the screen was off.

time adb push sda11 /dev/block/sda11; echo $?; matrix-commander-rs -m 'push finished!'
adb: error: failed to copy 'sda11' to '/dev/block/sda11': no response: Success

real    14m39.793s
user    0m5.990s
sys 1m29.839s
1

Let us run with tee this time:

time adb push sda11 /dev/block/sda11 | tee logs.txt; echo $?; matrix-commander-rs -m 'push finished!'
real    15m3.428s
user    0m3.817s
sys 1m30.173s
0

The tee purpose is to keep what percentage was reached.

Sometimes as this time I noticed nothing graphically before this output, and nothing in logs.txt.

"adb push" "pv" first page of results on DuckDuckGo and Google are not relevant.

Related to Benjamin-Loison/obs-studio/issues/15.

time adb push sda11 /dev/block/sda11 | tee logs.txt; echo $?; matrix-commander-rs -m 'push finished!'
real    15m18.672s
user    0m4.464s
sys 1m38.401s
0

There is really something going on with this 15 minutes delay.

Should search directly my adb error on the Internet. The only relevant results of DuckDuckGo and Google are:

Can try to use latest adb version.

adb --version
Android Debug Bridge version 1.0.41
Version 29.0.6-debian
Installed as /usr/lib/android-sdk/platform-tools/adb

On Debian 12 GNOME Pegasus.

https://en.wikipedia.org/w/index.php?title=Android_Debug_Bridge&oldid=1235449153 states that the last version is 34.0.1 (March 2023).

Source: Wikipedia: Android Debug Bridge (1235449153)

https://android.googlesource.com/platform/packages/modules/adb/ https://android.googlesource.com/platform/packages/modules/adb/+/HEAD/docs/user/adb.1.md https://android.googlesource.com/platform/packages/modules/adb/+/HEAD/docs/dev/README.md https://developer.android.com/tools/adb

do not seem to give directly the most recent version label.

adb is included in the Android SDK Platform Tools package. Download this package with the SDK Manager, which installs it at android_sdk/platform-tools/. If you want the standalone Android SDK Platform Tools package, download it here.

Source: https://developer.android.com/tools/adb

https://developer.android.com/studio/intro/update#sdk-manager

sdkmanager
Command 'sdkmanager' not found, but can be installed with:
sudo apt install sdkmanager
sudo apt install -y sdkmanager
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
  sdkmanager
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 33.2 kB of archives.
After this operation, 100 kB of additional disk space will be used.
Get:1 http://deb.debian.org/debian bookworm/main amd64 sdkmanager all 0.6.4-1 [33.2 kB]
Fetched 33.2 kB in 0s (957 kB/s)       
Selecting previously unselected package sdkmanager.
(Reading database ... 408580 files and directories currently installed.)
Preparing to unpack .../sdkmanager_0.6.4-1_all.deb ...
Unpacking sdkmanager (0.6.4-1) ...
Setting up sdkmanager (0.6.4-1) ...
sdkmanager
Downloading https://f-droid.github.io/android-sdk-transparency-log/signed/checksums.json.asc into /home/benjamin_loison/.cache/sdkmanager/checksums.json.asc
Downloading https://f-droid.github.io/android-sdk-transparency-log/signed/checksums.json into /home/benjamin_loison/.cache/sdkmanager/checksums.json
Traceback (most recent call last):
  File "/usr/bin/sdkmanager", line 33, in <module>
    sys.exit(load_entry_point('sdkmanager==0.6.4', 'console_scripts', 'sdkmanager')())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/sdkmanager.py", line 1180, in main
    method(args.packages)
  File "/usr/lib/python3/dist-packages/sdkmanager.py", line 991, in install
    android_home = get_android_home()
                   ^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/sdkmanager.py", line 541, in get_android_home
    android_home.mkdir(exist_ok=True)
  File "/usr/lib/python3.11/pathlib.py", line 1117, in mkdir
    os.mkdir(self, mode)
PermissionError: [Errno 13] Permission denied: '/opt/android-sdk'
sudo sdkmanager
Downloading https://f-droid.github.io/android-sdk-transparency-log/signed/checksums.json.asc into /root/.cache/sdkmanager/checksums.json.asc
Downloading https://f-droid.github.io/android-sdk-transparency-log/signed/checksums.json into /root/.cache/sdkmanager/checksums.json

Then {,sudo }sdkmanager do not return anything.

apt show sdkmanager
Package: sdkmanager
Version: 0.6.4-1
Priority: optional
Section: devel
Maintainer: Hans-Christoph Steiner <hans@eds.org>
Installed-Size: 100 kB
Depends: python3-requests, python3:any
Recommends: python3-argcomplete
Homepage: https://f-droid.org
Download-Size: 33.2 kB
APT-Manual-Installed: yes
APT-Sources: http://deb.debian.org/debian bookworm/main amd64 Packages
Description: Package manager for Android SDK packages
 A drop-in replacement for sdkmanager from the Android SDK written in
 Python.  It implements the exact API of the sdkmanager
 (https://developer.android.com/studio/command-line/sdkmanager)
 command line.  It only deviates from that API if it can be done while
 being 100% compatible.
 .
 The project also attempts to maintain the same terminal output so it
 can be compatible with things that scrape sdkmanager output.
sudo apt install adb
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
adb is already the newest version (1:29.0.6-28).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

https://developer.android.com/tools/releases/platform-tools

wget 'https://dl.google.com/android/repository/platform-tools-latest-linux.zip'
--2024-08-15 03:41:31--  https://dl.google.com/android/repository/platform-tools-latest-linux.zip
Resolving dl.google.com (dl.google.com)... 2a00:1450:4007:819::200e, 142.250.178.142
Connecting to dl.google.com (dl.google.com)|2a00:1450:4007:819::200e|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7472902 (7.1M) [application/zip]
Saving to: ‘platform-tools-latest-linux.zip’

platform-tools-latest-linu 100%[======================================>]   7.13M  34.7MB/s    in 0.2s    

2024-08-15 03:41:31 (34.7 MB/s) - ‘platform-tools-latest-linux.zip’ saved [7472902/7472902]
unzip platform-tools-latest-linux.zip
Archive:  platform-tools-latest-linux.zip
  inflating: platform-tools/NOTICE.txt  
  inflating: platform-tools/adb      
  inflating: platform-tools/etc1tool  
  inflating: platform-tools/fastboot  
  inflating: platform-tools/hprof-conv  
  inflating: platform-tools/make_f2fs  
  inflating: platform-tools/make_f2fs_casefold  
  inflating: platform-tools/mke2fs   
  inflating: platform-tools/mke2fs.conf  
 extracting: platform-tools/source.properties  
  inflating: platform-tools/sqlite3  
  inflating: platform-tools/lib64/libc++.so
rm platform-tools-latest-linux.zip
./platform-tools/adb --version
Android Debug Bridge version 1.0.41
Version 35.0.2-12147458
Installed as /media/benjamin_loison/6a7096c1-4c43-4ce6-8b84-56baa29f35fb/platform-tools/adb
Running on Linux 6.1.0-23-amd64 (x86_64)
./platform-tools/adb push sda11 /dev/block/sda11
adb: error: 65544-byte write failed: Success
./platform-tools/adb help
file transfer:
 push [--sync] [-z ALGORITHM] [-Z] LOCAL... REMOTE
     copy local files/directories to device
     -n: dry run: push files to device without storing to the filesystem
     -q: suppress progress messages
     -Z: disable compression
     -z: enable compression with a specified algorithm (any/none/brotli/lz4/zstd)
     --sync: only push files that have different timestamps on the host than the device
 pull [-a] [-z ALGORITHM] [-Z] REMOTE... LOCAL
     copy files/dirs from device
     -a: preserve file timestamp and mode
     -q: suppress progress messages
     -Z: disable compression
     -z: enable compression with a specified algorithm (any/none/brotli/lz4/zstd)
 sync [-l] [-z ALGORITHM] [-Z] [all|data|odm|oem|product|system|system_ext|vendor]
     sync a local build from $ANDROID_PRODUCT_OUT to the device (default all)
     -l: list files that would be copied, but don't copy them
     -n: dry run: push files to device without storing to the filesystem
     -q: suppress progress messages
     -Z: disable compression
     -z: enable compression with a specified algorithm (any/none/brotli/lz4/zstd)

Maybe should use sync.

"adb: error: 65544-byte write failed: Success" on DuckDuckGo and Google only return:

You're going to wipe out the serial number, IMEI, MAC addresses of the 2nd phone. There's no way to restore that. Also, since userdata on the 2nd device is using different decryption keys it won't be able to decrypt the data from the 1st device. That will leave you with the whole /data directory being garbage. It won't be able to boot until you wipe the data.

Should maybe investigate the Stack Exchange contribution I found my command to pull it may give details about pushing:

image

image

image

image

So Disks does not seem to help contrarily to what stated in the Stack Overflow answer 41397418.

adb shell cat /proc/partitions
major minor  #blocks  name

   1        0       8192 ram0
   1        1       8192 ram1
   1        2       8192 ram2
   1        3       8192 ram3
   1        4       8192 ram4
   1        5       8192 ram5
   1        6       8192 ram6
   1        7       8192 ram7
   1        8       8192 ram8
   1        9       8192 ram9
   1       10       8192 ram10
   1       11       8192 ram11
   1       12       8192 ram12
   1       13       8192 ram13
   1       14       8192 ram14
   1       15       8192 ram15
   8       16       8192 sdb
   8       17       3584 sdb1
   8       18        128 sdb2
   8       32       8192 sdc
   8       33       3584 sdc1
   8       34        128 sdc2
   8       48     131072 sdd
   8       49        104 sdd1
   8       50        128 sdd2
   8       51       1024 sdd3
   8       64    1703936 sde
   8       65        104 sde1
   8       66        512 sde2
   8       67       4096 sde3
   8       68         32 sde4
   8       69        512 sde5
   8       70     199680 sde6
   8       71       2048 sde7
   8       72       4096 sde8
   8       73      32768 sde9
   8       74       1024 sde10
   8       75      65536 sde11
   8       76        512 sde12
   8       77      98304 sde13
   8       78        128 sde14
   8       79         80 sde15
 259        0      98304 sde16
 259        1         64 sde17
 259        2         64 sde18
 259        3      24576 sde19
 259        4       2048 sde20
 259        5       2048 sde21
 259        6     174080 sde22
 259        7        128 sde23
 259        8       2560 sde24
 259        9      16384 sde25
 259       10        512 sde26
 259       11       4096 sde27
 259       12         32 sde28
 259       13        512 sde29
 259       14     199680 sde30
 259       15       2048 sde31
 259       16       4096 sde32
 259       17      32768 sde33
 259       18       1024 sde34
 259       19      65536 sde35
 259       20        512 sde36
 259       21      98304 sde37
 259       22        128 sde38
 259       23         80 sde39
 259       24      98304 sde40
 259       25         64 sde41
 259       26         64 sde42
 259       27      24576 sde43
 259       28        128 sde44
 259       29       2048 sde45
 259       30       2048 sde46
 259       31     174080 sde47
 259       32       2560 sde48
 259       33          4 sde49
 259       34       1024 sde50
 259       35        256 sde51
 259       36       8192 sde52
 259       37      33424 sde53
 259       38          4 sde54
 259       39          4 sde55
 259       40       1024 sde56
 259       41       8192 sde57
 259       42       2048 sde58
 259       43      65536 sde59
 259       44        128 sde60
 259       45        512 sde61
 259       46         28 sde62
 259       47        512 sde63
 259       48       1024 sde64
 259       49       4096 sde65
 259       50        128 sde66
   8       80     131072 sdf
   8       81        104 sdf1
   8       82       1024 sdf2
   8       83        128 sdf3
   8       84        128 sdf4
   8       85       2560 sdf5
   8       86        128 sdf6
   8       87       6144 sdf7
   8       88       6144 sdf8
   8       89       6144 sdf9
   8       96      12288 sdg
   8        0  247918592 sda
   8        1         96 sda1
   8        2          8 sda2
   8        3      32768 sda3
   8        4       1024 sda4
   8        5        512 sda5
   8        6        512 sda6
   8        7      30592 sda7
   8        8     204800 sda8
   8        9    8598324 sda9
   8       10    6291456 sda10
   8       11  232758456 sda11

So in theory could maybe more work with sda than sda11.

So the initial pull Stack Overflow contributions do not help me much.

https://xdaforums.com/t/guide-how-to-make-a-nandroid-backup-directly-to-your-computer-without-using-sdcard.1818321/ original post does not mention how to restore.

adb wireless does not seem possible in my case as the phone is not connected to a wifi at this stage, source: the Stack Overflow question 42411473.

"adb push" "15 minutes" brings many unrelevant results on DuckDuckGo and Google.

What about writing part by part? Being able to track where it stopped and continue would maybe solve the issue. Can verify afterwards with diff. Can keep track of where we restarted to maybe be less precise if diff raises an issue near such locations. However, adb push does not seem to support range writing, so should find an alternative and maybe the alternative on its own solve the issue without range writing. I have in mind dd.

echo test | adb shell echo

does not return anything, so it is unclear how to give commands within adb access somehow to my backup.

adb shell ifconfig
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0 
          inet6 addr: ::1/128 Scope: Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0 
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 
          collisions:0 txqueuelen:1000 
          RX bytes:0 TX bytes:0

A dirty approach could be to write at the beginning everything we are able to, then from adb move this beginning data to the appropriate location.

Should first verify that not complete adb push actually push some data, hence is not atomic.

I doubt having to do so, there must be alternatives to adb push, potentially relying on wifi/ethernet (tethering). Note that Pegasus does not have wifi capabilities.

Could maybe leverage the answers to the Stack Overflow question 8708886.

alternatives to adb push DuckDuckGo and Google first page of results do not seem interesting.

Trying to pass stdin to adb with the Stack Overflow answer 16028414:

adb shell nc --version
toybox 0.8.10-android
adb shell nc --help
Toybox 0.8.10-android multicall binary (see toybox --help)

usage: netcat [-46ELlntUu] [-pqWw #] [-s addr] {IPADDR PORTNUM|-f FILENAME|COMMAND...}

Forward stdin/stdout to a file or network connection.

-4  Force IPv4
-6  Force IPv6
-E  Forward stderr
-f  Use FILENAME (ala /dev/ttyS0) instead of network
-L  Listen and background each incoming connection (server mode)
-l  Listen for one incoming connection, then exit
-n  No DNS lookup
-p  Local port number
-q  Quit SECONDS after EOF on stdin, even if stdout hasn't closed yet
-s  Local source address
-t  Allocate tty
-v  Verbose
-u  Use UDP
-U  Use a UNIX domain socket
-W  SECONDS timeout for more data on an idle connection
-w  SECONDS timeout to establish connection
-z  zero-I/O mode [used for scanning]

When listening the COMMAND line is executed as a child process to handle
an incoming connection. With no COMMAND -l forwards the connection
to stdin/stdout. If no -p specified, -l prints the port it bound to and
backgrounds itself (returning immediately).

For a quick-and-dirty server, try something like:
netcat -s 127.0.0.1 -p 1234 -tL sh -l

Or use "stty 115200 -F /dev/ttyS0 && stty raw -echo -ctlecho" with
netcat -f to connect to a serial port.
nc -h
OpenBSD netcat (Debian patchlevel 1.219-1)
usage: nc [-46CDdFhklNnrStUuvZz] [-I length] [-i interval] [-M ttl]
      [-m minttl] [-O length] [-P proxy_username] [-p source_port]
      [-q seconds] [-s sourceaddr] [-T keyword] [-V rtable] [-W recvlimit]
      [-w timeout] [-X proxy_protocol] [-x proxy_address[:port]]
      [destination] [port]
    Command Summary:
        -4      Use IPv4
        -6      Use IPv6
        -b      Allow broadcast
        -C      Send CRLF as line-ending
        -D      Enable the debug socket option
        -d      Detach from stdin
        -F      Pass socket fd
        -h      This help text
        -I length   TCP receive buffer length
        -i interval Delay interval for lines sent, ports scanned
        -k      Keep inbound sockets open for multiple connects
        -l      Listen mode, for inbound connects
        -M ttl      Outgoing TTL / Hop Limit
        -m minttl   Minimum incoming TTL / Hop Limit
        -N      Shutdown the network socket after EOF on stdin
        -n      Suppress name/port resolutions
        -O length   TCP send buffer length
        -P proxyuser    Username for proxy authentication
        -p port     Specify local port for remote connects
        -q secs     quit after EOF on stdin and delay of secs
        -r      Randomize remote ports
        -S      Enable the TCP MD5 signature option
        -s sourceaddr   Local source address
        -T keyword  TOS value
        -t      Answer TELNET negotiation
        -U      Use UNIX domain socket
        -u      UDP mode
        -V rtable   Specify alternate routing table
        -v      Verbose
        -W recvlimit    Terminate after receiving a number of packets
        -w timeout  Timeout for connects and final net reads
        -X proto    Proxy protocol: "4", "5" (SOCKS) or "connect"
        -x addr[:port]  Specify proxy address and port
        -Z      DCCP mode
        -z      Zero-I/O mode [used for scanning]
    Port numbers can be individual or ranges: lo-hi [inclusive]

In adb:

pv
/system/bin/sh: pv: inaccessible or not found
time nc -lp 5555 > /dev/block/sda11
266m48.82s real     1m03.94s user    49m10.98s system

Had to manually interrupt when woke up. Firstly interrupt the reception over the emission seems more meaningful to avoid writing to the destination file a connection error, even if I believe that it would not happen. Is 2:51:48 and 22.0MiB/s evolving once done? As it is unclear when it is finished with a GiB precision.

adb forward tcp:4444 tcp:5555
cat sda11 | pv -s 256G | nc localhost 4444; matrix-commander-rs -m 'nc finished!'
 221GiB 2:51:48 [22.0MiB/s] [============================================================================================================================================>                        ] 86%

By the way if the disk is a bit larger than 256 GB it may stop, so should state 256 GB but verify that it exceeds if necessary.

I was about to state that this process is slower but as compare a whole copy and partial one it does not seem to be a fair comparison.

adb shell cat /dev/block/sda11 | pv -s 256G | diff sda11 -; echo $?; matrix-commander-rs -m 'diff finished!'
 221GiB 1:37:03 [39.0MiB/s] [============================================================================================================================================>                        ] 86%            
0

Maybe paying attention to disable Internet access can avoid Signal and WhatsApp issues but let us try anyway as I have backups.

My phone has been restored to the state I had saved (I no longer have a file after_dd in Termux, a folder after_dd in Files, a Proton VPN application installed and a message on my lock screen ending with after_dd, dd being the name of the tool for bit-to-bit backup). Fingerprint, password and SIM code, GSM (call and SMS), Signal, WhatsApp and Element seem to work correctly from my phone.

image

image

Note that if perform regularly such huge backups it may reduce the lifespan of the storage, hence the phone motherboard and notice that it is not sold as such, see https://shop.fairphone.com/fr/shop/category/spare-parts-4?category=4&filters=33.

I have just updated my phone with the weekly LineageOS update and will try again to restore my phone and check this restoration before testing it, this should make my phone not usable for about 6 hours. So I will know that even after several weeks (and so update my phone) restore a bit-to-bit backup as I do always works. As far as my phone is concerned, this is the last test I have in mind.

date && getprop ro.modversion
Thu Aug 15 12:03:59 CEST 2024
21.0-20240807-NIGHTLY-FP4

image

date && getprop ro.modversion
Thu Aug 15 12:10:46 CEST 2024
21.0-20240814-NIGHTLY-FP4

image

time nc -lp 5555 > /dev/block/sda11
^C  112m56.78s real     0m34.46s user    11m52.85s system
adb forward tcp:4444 tcp:5555
cat sda11 | pv -s 256G | nc localhost 4444; matrix-commander-rs -m 'nc finished!'

Not notified as have to interrupt both above commands, it seems that interrupting one end stops the other one. So how to stop when no more data is coming up?

Lost output because I Maximized a Restored window, see Benjamin_Loison/pv/issues/1.

adb shell cat /dev/block/sda11 | pv -s 256G | diff sda11 -; echo $?; matrix-commander-rs -m 'diff finished!'
 221GiB 1:36:36 [39.2MiB/s] [================================================>         ] 86%            
0

So it seems that the partition I used is only user data related as I have the same state as previous restoration but already have the update (I verified that are missing after_dd in Termux, Files and lock screen text and Proton VPN). Should investigate other partitions on a new update. Can set myself a reminder based on web-scraping or similar. Somehow this maybe used to restore a phone without having to redo the updates, however for whole OS backup it does not seem fine.

date && getprop ro.modversion
Thu Aug 15 16:41:41 CEST 2024
21.0-20240814-NIGHTLY-FP4

image

adb shell ls -l /dev/block/bootdevice/by-name/
total 0
lrwxrwxrwx 1 root root 15 1970-12-24 14:05 ALIGN_TO_128K_1 -> /dev/block/sdd1
lrwxrwxrwx 1 root root 15 1970-12-24 14:05 ALIGN_TO_128K_2 -> /dev/block/sdf1
lrwxrwxrwx 1 root root 15 1970-12-24 14:05 ALIGN_TO_128K_3 -> /dev/block/sda1
lrwxrwxrwx 1 root root 15 1970-12-24 14:05 ALIGN_TO_128K_4 -> /dev/block/sde1
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 abl_a -> /dev/block/sde10
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 abl_b -> /dev/block/sde34
lrwxrwxrwx 1 root root 15 1970-12-24 14:05 aop_a -> /dev/block/sde2
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 aop_b -> /dev/block/sde26
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 apdp -> /dev/block/sde51
lrwxrwxrwx 1 root root 15 1970-12-24 14:05 bluetooth_a -> /dev/block/sde7
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 bluetooth_b -> /dev/block/sde31
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 boot_a -> /dev/block/sde13
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 boot_b -> /dev/block/sde37
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 catecontentfv -> /dev/block/sde64
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 catefv -> /dev/block/sde63
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 cateloader -> /dev/block/sde58
lrwxrwxrwx 1 root root 15 1970-12-24 14:05 cdt -> /dev/block/sdd2
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 core_nhlos_a -> /dev/block/sde22
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 core_nhlos_b -> /dev/block/sde47
lrwxrwxrwx 1 root root 15 1970-12-24 14:05 ddr -> /dev/block/sdd3
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 devcfg_a -> /dev/block/sde14
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 devcfg_b -> /dev/block/sde38
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 devinfo -> /dev/block/sde49
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 dip -> /dev/block/sde50
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 dsp_a -> /dev/block/sde11
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 dsp_b -> /dev/block/sde35
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 dtbo_a -> /dev/block/sde19
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 dtbo_b -> /dev/block/sde43
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 featenabler_a -> /dev/block/sde23
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 featenabler_b -> /dev/block/sde44
lrwxrwxrwx 1 root root 15 1970-12-24 14:05 fpconfig -> /dev/block/sdf4
lrwxrwxrwx 1 root root 15 1970-12-24 14:05 fpconfig_persist -> /dev/block/sdf3
lrwxrwxrwx 1 root root 15 1970-12-24 14:05 frp -> /dev/block/sda6
lrwxrwxrwx 1 root root 15 1970-12-24 14:05 fsc -> /dev/block/sdf6
lrwxrwxrwx 1 root root 15 1970-12-24 14:05 fsg -> /dev/block/sdf5
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 fsgbk_a -> /dev/block/sde24
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 fsgbk_b -> /dev/block/sde48
lrwxrwxrwx 1 root root 15 1970-12-24 14:05 hyp_a -> /dev/block/sde5
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 hyp_b -> /dev/block/sde29
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 imagefv_a -> /dev/block/sde20
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 imagefv_b -> /dev/block/sde45
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 keymaster_a -> /dev/block/sde12
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 keymaster_b -> /dev/block/sde36
lrwxrwxrwx 1 root root 15 1970-12-24 14:05 keystore -> /dev/block/sda5
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 limits -> /dev/block/sde54
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 limits-cdsp -> /dev/block/sde55
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 logdump -> /dev/block/sde59
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 logfs -> /dev/block/sde57
lrwxrwxrwx 1 root root 15 1970-12-24 14:05 mdtp_a -> /dev/block/sde9
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 mdtp_b -> /dev/block/sde33
lrwxrwxrwx 1 root root 15 1970-12-24 14:05 mdtpsecapp_a -> /dev/block/sde8
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 mdtpsecapp_b -> /dev/block/sde32
lrwxrwxrwx 1 root root 15 1970-12-24 14:05 metadata -> /dev/block/sda7
lrwxrwxrwx 1 root root 15 1970-12-24 14:05 misc -> /dev/block/sda4
lrwxrwxrwx 1 root root 15 1970-12-24 14:05 modem_a -> /dev/block/sde6
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 modem_b -> /dev/block/sde30
lrwxrwxrwx 1 root root 15 1970-12-24 14:05 modemst1 -> /dev/block/sdf8
lrwxrwxrwx 1 root root 15 1970-12-24 14:05 modemst2 -> /dev/block/sdf9
lrwxrwxrwx 1 root root 15 1970-12-24 14:05 multiimgoem_a -> /dev/block/sde4
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 multiimgoem_b -> /dev/block/sde28
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 oembin -> /dev/block/sde65
lrwxrwxrwx 1 root root 15 1970-12-24 14:05 oempersist -> /dev/block/sda8
lrwxrwxrwx 1 root root 15 1970-12-24 14:05 persist -> /dev/block/sda3
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 questdatafv -> /dev/block/sde25
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 qupfw_a -> /dev/block/sde15
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 qupfw_b -> /dev/block/sde39
lrwxrwxrwx 1 root root 15 1970-12-24 14:05 rawdump -> /dev/block/sda9
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 recovery_a -> /dev/block/sde16
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 recovery_b -> /dev/block/sde40
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 secdata -> /dev/block/sde62
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 splash -> /dev/block/sde53
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 spunvm -> /dev/block/sde52
lrwxrwxrwx 1 root root 15 1970-12-24 14:05 ssd -> /dev/block/sda2
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 storsec -> /dev/block/sde60
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 super -> /dev/block/sda10
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 swversion -> /dev/block/sde66
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 toolsfv -> /dev/block/sde56
lrwxrwxrwx 1 root root 15 1970-12-24 14:05 traceability -> /dev/block/sdf2
lrwxrwxrwx 1 root root 15 1970-12-24 14:05 tunning -> /dev/block/sdf7
lrwxrwxrwx 1 root root 15 1970-12-24 14:05 tz_a -> /dev/block/sde3
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 tz_b -> /dev/block/sde27
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 uefisecapp_a -> /dev/block/sde21
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 uefisecapp_b -> /dev/block/sde46
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 uefivarstore -> /dev/block/sde61
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 userdata -> /dev/block/sda11
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 vbmeta_a -> /dev/block/sde18
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 vbmeta_b -> /dev/block/sde42
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 vbmeta_system_a -> /dev/block/sde17
lrwxrwxrwx 1 root root 16 1970-12-24 14:05 vbmeta_system_b -> /dev/block/sde41
lrwxrwxrwx 1 root root 15 1970-12-24 14:05 xbl_a -> /dev/block/sdb1
lrwxrwxrwx 1 root root 15 1970-12-24 14:05 xbl_b -> /dev/block/sdc1
lrwxrwxrwx 1 root root 15 1970-12-24 14:05 xbl_config_a -> /dev/block/sdb2
lrwxrwxrwx 1 root root 15 1970-12-24 14:05 xbl_config_b -> /dev/block/sdc2
adb shell ls -l /dev/block/bootdevice/by-name/ | wc -l
94
adb shell ls -l /dev/block/bootdevice/by-name/ | grep ' -> /dev/block/' | wc -l
93
adb shell ls -l /dev/block/bootdevice/by-name/ | grep -E ' -> /dev/block/sd(a|b|c|d|e|f)' | wc -l
93
adb shell ls -l /dev/block/bootdevice/by-name/ | grep -E ' -> /dev/block/sd[a-f]' | wc -l
93

So maybe just writing each /dev/block/sd[a-f] or /dev/block/ in general may achieve my goal. Let us wait the update to proceed to such backup to not lose much data.

I added to OverClock3000 /home/benjamin/notifyOnWebpageChange.py:

    {
        'url': 'https://download.lineageos.org/api/v2/devices/FP4/builds',
        'message': 'Make a wider backup than previously and try leveraging it to restore previous to update state (notably from the OS update point of view), see [Benjamin-Loison/android/issues/46#issuecomment-2282294748](https://github.com/Benjamin-Loison/android/issues/46#issuecomment-2282294748)',
    },

According to above:

adb shell cat /proc/partitions

instead of ̀sda11 (232758456 blocks) should focus on sda (247918592 blocks), then also sde (1703936 blocks), then also sdd and sdf (131072 blocks each) but I doubt that in the latter the system fits. Maybe other partitions are also useful as metadata. However, maybe should not alterate ramN. The question is if backup sda, are we able to just extract sda11? Linux tools to list partitions may help.

According to Benjamin-Loison/android/issues/77, the system size is about 26 GB, 256 - 232 = 24 but I am a bit doubtful of this calculus.

Maybe will investigate further before an update in the context of #25.

If I solve this issue, I should report my solution in the links I mentioned.

An interesting thing to try is to restore bit to bit backup after upgrading OS or installing a new OS to see if it works fine. The former in addition to bring safety itself, would be promising for the latter, see #25.

adb shell cat /dev/block/sda | pv -s 256G > sda; matrix-commander-rs -m 'adb copy finished!'
 236GiB 1:44:31 [38.6MiB/s] [==========================>   ] 92%
ls -l sda
-rw-r--r-- 1 benjamin_loison benjamin_loison 253868638208 Aug 22 01:23 sda
adb shell cat /dev/block/sda | pv -s 256G | diff sda -; echo $?; matrix-commander-rs -m 'diff finished!'

Disks, df -h ./sda and sudo fdisk -l ./sda do not seem interesting to export sda11. Could may get its precise offset, try to extract it and compare it with the actual value on the phone.

DuckDuckGo and Google results for Linux list partitions in iso were quickly not looking promising.

adb shell cat /sys/block/sda/sda11/start
30320232
adb shell cat /sys/block/sda/sda11/end
cat: /sys/block/sda/sda11/end: No such file or directory
adb shell cat /sys/block/sda/sda11/size
465516912

Source: the Stack Overflow answer 2625876

dd --help
Usage: dd [OPERAND]...
  or:  dd OPTION
Copy a file, converting and formatting according to the operands.

  bs=BYTES        read and write up to BYTES bytes at a time (default: 512);
                  overrides ibs and obs
  cbs=BYTES       convert BYTES bytes at a time
  conv=CONVS      convert the file as per the comma separated symbol list
  count=N         copy only N input blocks
  ibs=BYTES       read up to BYTES bytes at a time (default: 512)
  if=FILE         read from FILE instead of stdin
  iflag=FLAGS     read as per the comma separated symbol list
  obs=BYTES       write BYTES bytes at a time (default: 512)
  of=FILE         write to FILE instead of stdout
  oflag=FLAGS     write as per the comma separated symbol list
  seek=N          (or oseek=N) skip N obs-sized output blocks
  skip=N          (or iseek=N) skip N ibs-sized input blocks
  status=LEVEL    The LEVEL of information to print to stderr;
                  'none' suppresses everything but error messages,
                  'noxfer' suppresses the final transfer statistics,
                  'progress' shows periodic transfer statistics

N and BYTES may be followed by the following multiplicative suffixes:
c=1, w=2, b=512, kB=1000, K=1024, MB=1000*1000, M=1024*1024, xM=M,
GB=1000*1000*1000, G=1024*1024*1024, and so on for T, P, E, Z, Y, R, Q.
Binary prefixes can be used, too: KiB=K, MiB=M, and so on.
If N ends in 'B', it counts bytes not blocks.

Each CONV symbol may be:

  ascii     from EBCDIC to ASCII
  ebcdic    from ASCII to EBCDIC
  ibm       from ASCII to alternate EBCDIC
  block     pad newline-terminated records with spaces to cbs-size
  unblock   replace trailing spaces in cbs-size records with newline
  lcase     change upper case to lower case
  ucase     change lower case to upper case
  sparse    try to seek rather than write all-NUL output blocks
  swab      swap every pair of input bytes
  sync      pad every input block with NULs to ibs-size; when used
            with block or unblock, pad with spaces rather than NULs
  excl      fail if the output file already exists
  nocreat   do not create the output file
  notrunc   do not truncate the output file
  noerror   continue after read errors
  fdatasync  physically write output file data before finishing
  fsync     likewise, but also write metadata

Each FLAG symbol may be:

  append    append mode (makes sense only for output; conv=notrunc suggested)
  direct    use direct I/O for data
  directory  fail unless a directory
  dsync     use synchronized I/O for data
  sync      likewise, but also for metadata
  fullblock  accumulate full blocks of input (iflag only)
  nonblock  use non-blocking I/O
  noatime   do not update access time
  nocache   Request to drop cache.  See also oflag=sync
  noctty    do not assign controlling terminal from file
  nofollow  do not follow symlinks

Sending a USR1 signal to a running 'dd' process makes it
print I/O statistics to standard error and then resume copying.

Options are:

      --help        display this help and exit
      --version     output version information and exit

GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Full documentation <https://www.gnu.org/software/coreutils/dd>
or available locally via: info '(coreutils) dd invocation'

Searching DuckDuckGo and Google for Linux get start and end location of partition.

adb shell cat /dev/block/sda | pv -s 256G | diff sda -; echo $?; matrix-commander-rs -m 'diff finished!'
 236GiB 1:43:51 [38.9MiB/s] [==========================>   ] 92%            
0

Let us try to reboot to recovery using Power off and test again.

time adb shell cat /dev/block/sda | pv -s 256G | diff sda -; echo $?; matrix-commander-rs -m 'diff finished!'
Binary files sda and - differ
 196KiB 0:00:00 [5.48MiB/s] [>                             ]  0%

While previously when focused on sda11 this test results in identical state. I was thinking about an alternative about being able to extract sda11 by just saving sda again but just rebooting to recovery changes it so it seems a bit dangerous.

I would say that blocks of /proc/partitions are about 1,000 bytes or 1,024 bytes. Note that /proc/partitions also exists on Debian 12 GNOME Pegasus.

https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/4/html/reference_guide/s2-proc-partitions#s2-proc-partitions

adb shell cat /proc/devices
Character devices:
  1 mem
  5 /dev/tty
  5 /dev/console
  5 /dev/ptmx
  5 ttyprintk
 10 misc
 13 input
 21 sg
 81 video4linux
 86 ch
 89 i2c
108 ppp
116 alsa
128 ptm
136 pts
153 spi
180 usb
189 usb_device
212 DVB
226 drm
234 qseecom
235 msm_hdcp
236 kgsl
237 diag
238 ttyHS
239 glinkpkt
240 smcinvoke
241 subsys
242 ramdump
243 iio
244 ipa_odl_ctl
245 ipa_adpl
246 ipa
247 ptp
248 pps
249 media
250 rtc
251 msm_sps
252 dcc_sram
253 rpmsg
254 gpiochip
256 msm_rng
498 adsprpc-smd
499 6002000.stm
500 byte-cntr
501 qg
502 qg_battery
503 OISCDEV
504 binder
505 rpmb
506 bt
507 msm_npu
508 gsi_usb
509 uio
510 qce
511 fpsensor

Block devices:
  1 ramdisk
  7 loop
  8 sd
 65 sd
 66 sd
 67 sd
 68 sd
 69 sd
 70 sd
 71 sd
128 sd
129 sd
130 sd
131 sd
132 sd
133 sd
134 sd
135 sd
179 mmc
253 device-mapper
254 zram

DuckDuckGo and Google results for Linux get physical disk block size are quite unclear.

Searching "/proc/partitions" "dd".

https://linux-training.be/storage/ch06.html#idp53611328 does not help.

If do not verify that able to extract sda11 will not be able to verify it afterwards.

https://doc.ubuntu-fr.org/dd?rev=1718787652#partitions_et_tailles_en_ko:

dd if=/proc/partitions | hexdump -C
1+1 records in
1+1 records out
525 bytes copied, 0.000122966 s, 4.3 MB/s
00000000  6d 61 6a 6f 72 20 6d 69  6e 6f 72 20 20 23 62 6c  |major minor  #bl|
00000010  6f 63 6b 73 20 20 6e 61  6d 65 0a 0a 20 32 35 39  |ocks  name.. 259|
00000020  20 20 20 20 20 20 20 20  30 20 20 37 38 31 34 31  |        0  78141|
00000030  32 31 38 34 20 6e 76 6d  65 30 6e 31 0a 20 32 35  |2184 nvme0n1. 25|
00000040  39 20 20 20 20 20 20 20  20 31 20 20 20 20 20 34  |9        1     4|
00000050  39 38 36 38 38 20 6e 76  6d 65 30 6e 31 70 31 0a  |98688 nvme0n1p1.|
00000060  20 32 35 39 20 20 20 20  20 20 20 20 32 20 20 20  | 259        2   |
00000070  20 20 20 20 20 20 20 31  20 6e 76 6d 65 30 6e 31  |       1 nvme0n1|
00000080  70 32 0a 20 32 35 39 20  20 20 20 20 20 20 20 33  |p2. 259        3|
00000090  20 20 37 38 30 39 31 30  35 39 32 20 6e 76 6d 65  |  780910592 nvme|
000000a0  30 6e 31 70 35 0a 20 20  20 38 20 20 20 20 20 20  |0n1p5.   8      |
000000b0  20 20 30 20 20 39 37 36  37 36 32 35 38 34 20 73  |  0  976762584 s|
000000c0  64 61 0a 20 20 20 38 20  20 20 20 20 20 20 20 31  |da.   8        1|
000000d0  20 20 20 20 20 35 32 34  32 38 38 20 73 64 61 31  |     524288 sda1|
000000e0  0a 20 20 20 38 20 20 20  20 20 20 20 20 32 20 20  |.   8        2  |
000000f0  39 37 35 32 33 36 30 39  36 20 73 64 61 32 0a 20  |975236096 sda2. |
00000100  20 20 38 20 20 20 20 20  20 20 20 33 20 20 20 20  |  8        3    |
00000110  31 30 30 30 34 34 38 20  73 64 61 33 0a 20 20 20  |1000448 sda3.   |
00000120  38 20 20 20 20 20 20 20  31 36 20 20 32 35 30 30  |8       16  2500|
00000130  35 39 30 39 36 20 73 64  62 0a 20 20 20 38 20 20  |59096 sdb.   8  |
00000140  20 20 20 20 20 31 37 20  20 32 34 34 31 34 30 30  |     17  2441400|
00000150  33 32 20 73 64 62 31 0a  20 20 20 38 20 20 20 20  |32 sdb1.   8    |
00000160  20 20 20 31 38 20 20 20  20 20 20 20 20 20 20 31  |   18          1|
00000170  20 73 64 62 32 0a 20 20  20 38 20 20 20 20 20 20  | sdb2.   8      |
00000180  20 32 31 20 20 20 20 35  39 31 36 36 37 32 20 73  | 21    5916672 s|
00000190  64 62 35 0a 20 32 35 33  20 20 20 20 20 20 20 20  |db5. 253        |
000001a0  30 20 20 37 38 30 38 39  34 32 30 38 20 64 6d 2d  |0  780894208 dm-|
000001b0  30 0a 20 32 35 33 20 20  20 20 20 20 20 20 31 20  |0. 253        1 |
000001c0  20 37 37 39 38 35 37 39  32 30 20 64 6d 2d 31 0a  | 779857920 dm-1.|
000001d0  20 32 35 33 20 20 20 20  20 20 20 20 32 20 20 20  | 253        2   |
000001e0  20 20 39 39 39 34 32 34  20 64 6d 2d 32 0a 20 20  |  999424 dm-2.  |
000001f0  20 37 20 20 20 20 20 20  20 20 30 20 20 32 34 37  | 7        0  247|
00000200  39 31 38 35 39 32 20 6c  6f 6f 70 30 0a           |918592 loop0.|
0000020d

is unclear.

Without being sure can assume a value like the Unix Stack Exchange answer 512959.

man proc
...
       /proc/partitions
              Contains  the  major and minor numbers of each partition as well
              as the number of 1024-byte blocks and the partition name.
...

https://askubuntu.com/a/229450 and the other answers not mention the following error.

adb shell diff <(dd if=/dev/block/sda11 | pv -s 256G) <(dd if=/dev/block/sda11 | pv -s 256G); echo $?
dd: failed to open '/dev/block/sda11': No such file or directory
dd: failed to open '/dev/block/sda11': No such file or directory
diff: Can't stat /dev/fd/63: No such file or directory
2
adb shell 'diff <(dd if=/dev/block/sda11 | pv -s 256G) <(dd if=/dev/block/sda11 | pv -s 256G); echo $?'
/system/bin/sh: syntax error: unexpected '('
adb shell "diff <(dd if=/dev/block/sda11 | pv -s 256G) <(dd if=/dev/block/sda11 | pv -s 256G); echo $?"
/system/bin/sh: syntax error: unexpected '('
adb shell echo $0
bash
adb shell bash
/system/bin/sh: bash: inaccessible or not found
adb shell sh -h
^C
adb shell sh --help
sh: sh: --: unknown option
adb shell sh --version
sh: sh: --: unknown option
adb shell sh -v
^C
diff <(adb shell cat /dev/block/sda11 | pv -s 256G) <(adb shell cat /dev/block/sda11 | pv -s 256G); echo $?
diff <(adb shell cat /dev/block/sda11 | pv -N 'Source 1' -s 256G) <(adb shell cat /dev/block/sda11 | pv -N 'Source 2' -s 256G); echo $?
diff <(adb shell cat /dev/block/sda11 | pv -N 'Source 1' -s 256G 2> source_1_stderr.txt) <(adb shell cat /dev/block/sda11 | pv -N 'Source 2' -s 256G 2> source_2_stderr.txt); echo $?

does not populate source_{1,2}_stderr.txt.

adb shell cat /dev/block/sda11 | pv -s 256G > sda11; matrix-commander-rs -m 'adb copy finished!'

alternatively otherwise do not have progress.

adb shell dd if=/dev/block/sda11 | pv -s 256G | diff sda11 -; echo $?; matrix-commander-rs -m 'diff finished!'
465516912+0 records iniB/s] [============================================================================================================================================>                        ] 86% ETA 0:26:07
465516912+0 records out
238344658944 bytes (222 G) copied, 10220.358 s, 22 M/s
 221GiB 2:50:24 [22.2MiB/s] [============================================================================================================================================>                        ] 86%            
0

Related to Benjamin_Loison/bash/issues/6.

Searching "/sys/block/sda/sda" "/start" unit does not seem to help to know /sys/block/sda/sda11/start unit.

However, it should be guessable from:

adb shell cat /proc/partitions
major minor  #blocks  name
...
   8        0  247918592 sda
   8        1         96 sda1
   8        2          8 sda2
   8        3      32768 sda3
   8        4       1024 sda4
   8        5        512 sda5
   8        6        512 sda6
   8        7      30592 sda7
   8        8     204800 sda8
   8        9    8598324 sda9
   8       10    6291456 sda10
   8       11  232758456 sda11

247,918,592 (sda) - 232,758,456 (sda11) = 15,160,136 with unit being 1,024 bytes. While 247,918,592 is a multiple of 512, 232,758,456 is not. If sda11 was equivalent to sda above formula would be correct, there is no + 1 needed or similar it seems.

ibs-size being 512 bytes (so 15,160,136 * 2 = 30,320,272 with unit being 512 bytes) and as sda11 is the last part of sda:

dd if=sda skip=30320272 | pv -s 256G | diff sda11 -; echo $?; matrix-commander -m 'diff finished!'
Binary files sda11 and - differ
4.00KiB 0:00:00 [2.81MiB/s] [>                                                                                                                                                                    ]  0%            
1

Could test all locations but in this case it seems that it would take too much time.

15160136 does not work too.

dd if=sda skip=30320232 | pv -s 256G | diff sda11 -; echo $?; matrix-commander-rs -m 'diff finished!'
Binary files sda11 and - differ==============================================>         ] 86% ETA 0:03:12
465516952+0 records in
465516952+0 records out
238344679424 bytes (238 GB, 222 GiB) copied, 1251.53 s, 190 MB/s
 221GiB 0:20:51 [ 181MiB/s] [================================================>         ] 86%            
1

Source: above

So identical on 221 GiB so seems quite good. The difference between ls -l sda11 and above is about 20,480 bytes so it seems quite good indeed.

date && getprop ro.modversion
Thu Aug 22 18:41:18 CEST 2024
21.0-20240814-NIGHTLY-FP4

image

date && getprop ro.modversion
Thu Aug 22 18:44:08 CEST 2024
21.0-20240821-NIGHTLY-FP4

image

In theory writing the whole system contrarily to user data can involve an Android version rollback (within or across versions) which is forbidden as far as I remember so it may brick the phone. However, here it is within the Android version so should be fine. Anyway how can the phone notices that it is a downgrade if I overwrite all its memory? Maybe here I do not overwrite all its memory if even all is accessible, may it is on an inaccessible register that only accepts being increment/set with increasing values. Maybe not a great idea to overwrite user data when have updated the phone as the system and user data are compatible for a given system version (maybe not even in this case).

time nc -lp 5555 > /dev/block/sda
^C  109m12.43s real     0m37.45s user    12m01.09s system
adb forward tcp:4444 tcp:5555
cat sda | pv -s 256G | nc localhost 4444; matrix-commander-rs -m 'nc finished!'
4444
 236GiB 1:43:49 [38.9MiB/s] [===> ] 92%
adb shell dd if=/dev/block/sda | pv -s 256G | diff sda -; echo $?; matrix-commander-rs -m 'diff finished!'
495837184+0 records iniB/s] [==========> ] 92% ETA 0:09:09
495837184+0 records out
253868638208 bytes (236 G) copied, 6630.786 s, 37 M/s
 236GiB 1:50:32 [36.5MiB/s] [==========> ] 92%            
0
date && getprop ro.modversion
Thu Aug 22 23:10:01 CEST 2024
21.0-20240814-NIGHTLY-FP4

image

image

image

So 5G works fine but not wifi...

https://wiki.termux.com/wiki/Termux:API

termux-wifi-connectioninfo
{
  "bssid": null,
  "frequency_mhz": -1,
  "ip": "0.0.0.0",
  "link_speed_mbps": -1,
  "mac_address": "02:00:00:00:00:00",
  "network_id": -1,
  "rssi": -127,
  "ssid": "<unknown ssid>",
  "ssid_hidden": false,
  "supplicant_state": "UNINITIALIZED"
}
termux-wifi-enable -h
Usage: termux-wifi-enable [true | false]
Toggle Wi-Fi On/Off
termux-wifi-enable true
termux-wifi-scaninfo
[]

Recorder also stops when try recording. There is also no sound when playing a YouTube video.

Reboot does not help.

Making a backup of sda after the update to try to overwrite it if things go wrong would have been a good idea. Maybe somehow the update updated drivers and the versions are incompatible, so updating again will solve the issue. I had the feeling that the update download was quite fast. Maybe because it was cached somewhere?

Updating solved the 3 mentioned issues.

Does restoring a previous update user-data have the same issues? Well as I was running the restored user-data state until this update so about a week, there was quite no issue at least for wifi and YouTube.

Benjamin-Loison commented 2 months ago

If from a BIOS like boot to the other I have an identical retrievable disk it may make sense to be confident enough to just copy it as a backup. So dd once and then use diff if possible.

Benjamin-Loison commented 2 months ago

So concerning my Fairphone 4 (System updates shows LineageOS 21 Android 14 August 7, 2024) to backup:

adb shell cmd package list packages -3
Output: ``` package:org.sufficientlysecure.keychain package:com.freerdp.afreerdp package:org.mozilla.fennec_fdroid package:org.torproject.torbrowser package:com.aurora.store package:com.robust_image_source_identification_on_modern_smartphones.camera package:com.kunzisoft.keepass.libre package:com.discord package:com.simplemobiletools.gallery.pro package:org.chromium.chrome package:org.thoughtcrime.securesms package:com.termux.boot package:com.whatsapp package:org.openfoodfacts.scanner package:com.carriez.flutter_hbb package:app.organicmaps package:com.termux.api package:openfoodfacts.github.scrachx.openfood package:com.carrefour.fid.android package:net.hanshq.hello package:org.fdroid.fdroid package:com.android.fmradio package:org.videolan.vlc package:org.electrum.electrum package:com.fsck.k9 package:com.termux package:org.fedorahosted.freeotp package:com.artifex.mupdf.viewer.app package:im.vector.app package:com.etesync.syncadapter package:com.sonos.acr2 ```

Source: the Stack Overflow answer 53634311

Screenshots of apps: ![image](https://github.com/user-attachments/assets/03375dde-d2d4-4392-8565-ec090178c035) ![image](https://github.com/user-attachments/assets/b5dbf2a2-deec-41c0-8eb2-e4a5c5d84a0f)

I was thinking maybe should write down what store of applications installed what app but my rule is F-Droid and if not available then Aurora Store. The question is how to automate installing multiple apps on these store of applications?

Related to Benjamin_Loison/fdroidclient/issues/13 and Benjamin_Loison/AuroraStore/issues/24.

In fact backing up APKs would be interesting too for some edge cases such as Termux GitHub releases being far more up-to-date. SeedVault does so but redundancy would be nice.

SeedVault may help.

Now that proceeded once, automate this would be nice. Could also add later support for other apps (not bold ones).

alias fp4ssht='ssh -p 8022 fairphone-4-5g -t'

adb shell cmd package list packages -3 > apps.txt

fp4ssht termux-contact-list > termux-contact-list.json
fp4ssht termux-sms-list -l -1 > termux-sms-list.json
fp4ssht termux-call-log -l -1 > termux-call-log.json

# https://codeberg.org/Benjamin_Loison/android_packages_apps_Recorder/issues/{4,5}

# TODO: implement incremental snapshot
fp4ssht tar -zcf /sdcard/termux-backup.tar.gz -C /data/data/com.termux/files ./home ./usr
# TODO: https://adbshell.com/commands/adb-pull does not have a `--sync` like https://adbshell.com/commands/adb-push one which *only push files that are newer on the host than the Android device*
# adb pull -a /sdcard/termux-backup.tar.gz

# TODO: implement incremental snapshot
# Pay attention to be root to have all files?
adb pull -a /sdcard/

Also note that incremental snapshot in addition to being faster, can be interesting to easily keep old snapshots, such that even if the last snapshot does not work fine, the previous one should (except if the last one failed for the same reason).

Missing:

Concerning automating SeedVault, see Benjamin_Loison/seedvault/issues/{15,9}.

So what SeedVault cannot backup automatically:

Related to Benjamin-Loison/termux-api/issues/1.

get_first_message.py:

#!/usr/bin/python3

import json

FILE_PATH = "matrix - Benjamin Loison's bot - Chat Export - 2024-08-30T17-09-31.447Z.json"

with open(FILE_PATH) as f:
    data = json.load(f)

messages = data['messages']
for message in messages:
    if message['type'] == 'm.room.message':
        print(json.dumps(message, indent = 4))
        break

Clean and precise verbosity can be considered afterwards if it is not satisfying.

First partial run ```bash adb pull /sdcard/; matrix-commander -m 'adb pulled!' ``` ``` /sdcard/: 13998 files pulled, 0 skipped. 106.5 MB/s (141881513907 bytes in 1270.911s) ``` ```bash adb shell cat /dev/block/sda | pv -s 256G > sda; matrix-commander -m 'adb copy finished!' ``` ``` 236GiB 0:27:36 [ 146MiB/s] [=============================> ] 92% ``` ```bash df -h / ``` ``` Filesystem Size Used Avail Use% Mounted on /dev/mapper/vgmint-root 1.8T 1.7T 48G 98% / ``` ```bash ls -l sda ``` ``` -rw-rw-r-- 1 benjamin benjamin 253868638208 Aug 26 13:34 sda ``` ```bash adb shell dd if=/dev/block/sda | pv -s 256G | diff sda -; echo $?; matrix-commander -m 'diff finished!' ``` ``` 495837184+0 records iniB/s] [===================================================================================> ] 92% ETA 0:09:26 495837184+0 records out 253868638208 bytes (236 G) copied, 6850.934 s, 35 M/s 236GiB 1:54:12 [35.3MiB/s] [===================================================================================> ] 92% 0 ``` ```bash adb shell ls -l /dev/block/bootdevice/by-name/userdata ``` ``` lrwxrwxrwx 1 root root 16 1971-01-04 09:32 /dev/block/bootdevice/by-name/userdata -> /dev/block/sda11 ``` ```bash adb shell cat /sys/block/sda/sda11/start ``` ``` 30320232 ``` ```bash adb shell cat /dev/block/sda11 | pv -s 256G > sda11; matrix-commander -m 'adb copy finished!' ``` ```bash ls -l sda11 ``` ```bash adb shell dd if=/dev/block/sda11 | pv -s 256G | diff sda11 -; echo $?; matrix-commander -m 'diff finished!' ``` ```bash dd if=sda skip=30320232 | pv -s 256G | diff sda11 -; echo $?; matrix-commander -m 'diff finished!' ``` Not enough space on computer to do 4 previous statements, let us skip it as everything look as previously tested. Can use hash functions instead? See [Benjamin_Loison/coreutils/issues/6](https://codeberg.org/Benjamin_Loison/coreutils/issues/6). Maybe hash function is a slower than storing to disk and comparing byte by byte. ```bash adb shell cat /dev/block/sda11 | pv -s 256G | sha512sum; matrix-commander -m 'adb hash finished!' ``` ``` 221GiB 0:26:15 [ 144MiB/s] [==============================================================================> ] 86% db13de090c925c53fe6250297df7eae90c797c8bac90a351d1ca4bdffab6eba30d7d864fd56f4e83d8ee3b91c471d15ae80398248fc95f3a487992cb29f30473 - ``` See [Benjamin_Loison/adb/issues/10](https://gitea.lemnoslife.com/Benjamin_Loison/adb/issues/10). As mentioned in [#issuecomment-2282294748](https://github.com/Benjamin-Loison/android/issues/46#issuecomment-2282294748) the following can not work fine, we have to be byte precise. ```bash adb shell dd if=/dev/block/sda skip=30320232 | pv -s 256G | sha512sum; echo $?; matrix-commander -m 'adb hash finished!' ``` Compare both hashes. ```bash adb shell ls /sys/block/sda/sda11/ ``` ``` alignment_offset dev discard_alignment holders inflight partition power ro size start stat subsystem uevent ``` ```bash adb shell cat /sys/block/sda/sda11/size ``` ``` 465516912 ``` https://doc.ubuntu-fr.org/dd?rev=1724682257#verifier_une_partie_quelconque_du_disque ```bash dd --help ``` ``` ... count=N copy only N input blocks .. ``` Unclear if same size as: ```bash dd --help ``` ``` ... skip=N (or iseek=N) skip N ibs-sized input blocks ... ``` ```bash adb shell dd if=/dev/block/sda skip=30320232 count=465516912 | pv -s 256G | sha512sum; echo $?; matrix-commander -m 'adb hash finished!' ``` ``` 465516912+0 records iniB/s] [==============================================================================> ] 86% ETA 0:16:51 465516912+0 records out 238344658944 bytes (222 G) copied, 6430.597 s, 35 M/s 221GiB 1:47:12 [35.3MiB/s] [==============================================================================> ] 86% db13de090c925c53fe6250297df7eae90c797c8bac90a351d1ca4bdffab6eba30d7d864fd56f4e83d8ee3b91c471d15ae80398248fc95f3a487992cb29f30473 - 0 ``` Compare both hashes. If they do not match, could consider just verifying size with `wc -c`. Both hashes match! See [Benjamin_Loison/adb/issues/9](https://gitea.lemnoslife.com/Benjamin_Loison/adb/issues/9). Well it's time for recovery > *Factory reset* > *Format data/factory reset* > *Format data* other options also in *Advanced* do not seem more interesting. ![image](https://github.com/user-attachments/assets/ba5004e9-3850-42e4-a338-62aa42c2505e) ![image](https://github.com/user-attachments/assets/9a4a54e2-49f3-4e8f-8b49-aec362ede61c) ![image](https://github.com/user-attachments/assets/89c1ae48-054f-4c86-9cf9-bcd0d0a14838) Then *Reboot system now*. ![image](https://github.com/user-attachments/assets/e25f3cb0-4a69-427c-803d-111b54255f26) All these factory reset steps were quite instantaneous. So no Fairphone OS and LineageOS reinstall. *Skip* wifi setup. ![image](https://github.com/user-attachments/assets/5cfd89b0-5cc3-4259-960c-9459d90d4395) ![image](https://github.com/user-attachments/assets/d83b843a-db06-4ad8-ae68-fcf6cb3c8295) Linux Mint 22 Cinnamon Framework 13 nemo presents an empty *Fairphone 4 5G*. ```bash adb shell ``` ``` adb: no devices/emulators found ``` So let us skip it and proceed once finished installation. Call and call quiet and loud speaker work fine. SMS sending and receiving too according to self phone number. Front and back cameras seem to work fine. Recorder also works fine. 5G also works fine. Wifi also works fine. The LineageOS installed is the 14/08/24 being Android 14. I doubt so as I notice 21/08/24 after SeedVault restoration, maybe I confused with the Android version. ```bash adb shell ls -lah /sdcard/ ``` ``` total 39 drwxrwx--- 2 root everybody 3.3K 2024-08-21 04:56 Alarms drwxrwx--- 5 root everybody 3.3K 2024-08-21 04:56 Android drwxrwx--- 2 root everybody 3.3K 2024-08-21 04:56 Audiobooks drwxrwx--- 2 root everybody 3.3K 2024-08-21 04:56 DCIM drwxrwx--- 2 root everybody 3.3K 2024-08-21 04:56 Documents drwxrwx--- 2 root everybody 3.3K 2024-08-21 04:56 Download drwxrwx--- 3 root everybody 3.3K 2024-08-21 04:56 Movies drwxrwx--- 3 root everybody 3.3K 2024-08-21 04:56 Music drwxrwx--- 2 root everybody 3.3K 2024-08-21 04:56 Notifications drwxrwx--- 3 root everybody 3.3K 2024-08-21 04:56 Pictures drwxrwx--- 2 root everybody 3.3K 2024-08-21 04:56 Podcasts drwxrwx--- 3 root everybody 3.3K 2024-08-26 19:16 Recordings drwxrwx--- 2 root everybody 3.3K 2024-08-21 04:56 Ringtones ``` https://adbshell.com/commands/adb-push ```bash adb push .SeedVaultAndroidBackup/ sdcard/; matrix-commander -m 'Push finished!' ``` It consumes my 32 GB of RAM and 32 GB of swap according to `htop`, then stops with *Killed*. See [Benjamin_Loison/adb/issues/11](https://gitea.lemnoslife.com/Benjamin_Loison/adb/issues/11). `"adb push" "Killed"` and *adb push takes all memory* DuckDuckGo and Google results do not seem relevant... ```bash adb --version ``` ``` Android Debug Bridge version 1.0.41 Version 34.0.4-debian Installed as /usr/lib/android-sdk/platform-tools/adb Running on Linux 6.8.0-41-generic (x86_64) ``` https://en.wikipedia.org/w/index.php?title=Android_Debug_Bridge&oldid=1235449153 https://developer.android.com/tools/adb https://developer.android.com/tools/releases/platform-tools https://dl.google.com/android/repository/platform-tools-latest-linux.zip ```bash ./platform-tools/adb --version ``` ``` Android Debug Bridge version 1.0.41 Version 35.0.2-12147458 Installed as /home/benjamin/Downloads/platform-tools/adb Running on Linux 6.8.0-41-generic (x86_64) ``` ```bash adb push .SeedVaultAndroidBackup/ sdcard/; matrix-commander -m 'Push finished!' ``` ``` libc++abi: terminating due to uncaught exception of type std::bad_alloc: std::bad_alloc Aborted (core dumped) ``` So same issue. Maybe should use `nc` as for bit by bit. Or could try to push sub folder by subfolder. ```bash ls -lh .SeedVaultAndroidBackup/ ``` ``` total 128K drwxrwxr-x 2 benjamin benjamin 20K Aug 26 06:16 1708227601084 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:16 1709435066582 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:16 1709435646089 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:16 1709517498938 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:16 1723337088655 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:16 1723417751383 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:16 1723471255467 drwxrwxr-x 2 benjamin benjamin 20K Aug 26 06:16 1723488545190 drwxrwxr-x 258 benjamin benjamin 36K Aug 26 06:26 4bd6f001a7b663fe.sv ``` ```bash du -sh .SeedVaultAndroidBackup/* ``` ``` 1.2G .SeedVaultAndroidBackup/1708227601084 16K .SeedVaultAndroidBackup/1709435066582 9.9M .SeedVaultAndroidBackup/1709435646089 16K .SeedVaultAndroidBackup/1709517498938 150M .SeedVaultAndroidBackup/1723337088655 573M .SeedVaultAndroidBackup/1723417751383 1.2G .SeedVaultAndroidBackup/1723471255467 2.3G .SeedVaultAndroidBackup/1723488545190 66G .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv ``` I guess that it allocates as much memory as the data to push. ```bash ls -lh .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv ```
Output: ``` total 4.5M drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:26 00 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:26 01 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:26 02 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:26 03 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:26 04 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:26 05 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:26 06 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:26 07 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:26 08 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:26 09 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:25 0a drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:25 0b drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:25 0c drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:24 0d drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:24 0e drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:24 0f drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:26 10 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:25 11 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:25 12 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:25 13 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:25 14 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:25 15 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:25 16 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:25 17 -rw-r--r-- 1 benjamin benjamin 96 Aug 26 06:16 1708211516067.SeedSnap -rw-r--r-- 1 benjamin benjamin 959K Aug 26 06:16 1723486518987.SeedSnap -rw-r--r-- 1 benjamin benjamin 1.1M Aug 26 06:16 1724644800389.SeedSnap drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:25 18 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:25 19 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:23 1a drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:23 1b drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:23 1c drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:23 1d drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:23 1e drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:23 1f drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:24 20 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:24 21 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:24 22 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:24 23 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:24 24 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:24 25 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:24 26 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:24 27 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:24 28 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:24 29 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:22 2a drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:22 2b drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:22 2c drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:22 2d drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:22 2e drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:22 2f drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:23 30 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:23 31 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:23 32 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:23 33 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:23 34 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:23 35 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:23 36 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:23 37 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:23 38 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:22 39 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:21 3a drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:21 3b drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:21 3c drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:21 3d drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:21 3e drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:21 3f drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:22 40 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:22 41 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:22 42 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:22 43 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:22 44 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:21 45 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:21 46 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:21 47 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:21 48 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:21 49 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:20 4a drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:20 4b drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:20 4c drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:20 4d drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:20 4e drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:20 4f drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:20 50 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:20 51 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:20 52 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:20 53 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:20 54 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:20 55 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:20 56 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:20 57 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:20 58 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:20 59 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:19 5a drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:19 5b drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:19 5c drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:19 5d drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:19 5e drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:19 5f drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:20 60 drwxrwxr-x 2 benjamin benjamin 16K Aug 26 06:20 61 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:20 62 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:19 63 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:19 64 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:19 65 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:19 66 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:19 67 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:19 68 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:19 69 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:18 6a drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:18 6b drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:18 6c drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:18 6d drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:18 6e drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:18 6f drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:19 70 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:19 71 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:19 72 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:19 73 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:19 74 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:19 75 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:19 76 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:19 77 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:19 78 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:18 79 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:17 7a drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:18 7b drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:18 7c drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:17 7d drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:17 7e drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:17 7f drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:18 80 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:18 81 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:18 82 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:18 83 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:18 84 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:18 85 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:17 86 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:17 87 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:17 88 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:17 89 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:17 8a drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:18 8b drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:18 8c drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:17 8d drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:17 8e drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:17 8f drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:17 90 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:17 91 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:17 92 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:17 93 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:17 94 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:17 95 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:17 96 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:18 97 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:17 98 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:17 99 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:17 9a drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:18 9b drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:18 9c drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:18 9d drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:18 9e drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:18 9f drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:17 a0 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:17 a1 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:18 a2 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:18 a3 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:17 a4 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:18 a5 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:17 a6 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:17 a7 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:16 a8 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:17 a9 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:25 aa drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:25 ab drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:25 ac drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:25 ad drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:25 ae drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:25 af drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:26 b0 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:26 b1 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:26 b2 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:26 b3 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:26 b4 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:26 b5 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:26 b6 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:26 b7 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:26 b8 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:26 b9 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:24 ba drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:24 bb drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:24 bc drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:24 bd drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:24 be drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:24 bf drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:25 c0 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:25 c1 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:25 c2 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:25 c3 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:25 c4 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:25 c5 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:24 c6 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:24 c7 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:24 c8 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:24 c9 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:23 ca drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:23 cb drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:23 cc drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:23 cd drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:23 ce drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:23 cf drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:24 d0 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:24 d1 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:24 d2 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:23 d3 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:23 d4 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:23 d5 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:23 d6 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:23 d7 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:23 d8 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:23 d9 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:22 da drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:22 db drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:22 dc drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:21 dd drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:21 de drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:21 df drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:22 e0 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:22 e1 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:22 e2 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:22 e3 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:22 e4 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:22 e5 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:22 e6 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:22 e7 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:22 e8 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:22 e9 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:20 ea drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:20 eb drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:20 ec drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:20 ed drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:20 ee drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:20 ef drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:21 f0 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:21 f1 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:21 f2 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:21 f3 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:21 f4 drwxrwxr-x 2 benjamin benjamin 4.0K Aug 26 06:21 f5 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:21 f6 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:21 f7 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:21 f8 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:21 f9 drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:20 fa drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:20 fb drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:19 fc drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:19 fd drwxrwxr-x 2 benjamin benjamin 12K Aug 26 06:19 fe ```
```bash du -sh .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/* ```
Output: ``` 119M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/00 310M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/01 309M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/02 250M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/03 223M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/04 265M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/05 224M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/06 334M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/07 194M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/08 314M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/09 237M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/0a 308M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/0b 185M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/0c 239M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/0d 273M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/0e 279M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/0f 386M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/10 381M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/11 185M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/12 227M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/13 339M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/14 300M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/15 291M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/16 246M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/17 12K .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/1708211516067.SeedSnap 968K .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/1723486518987.SeedSnap 1.1M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/1724644800389.SeedSnap 287M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/18 329M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/19 199M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/1a 148M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/1b 242M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/1c 207M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/1d 302M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/1e 289M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/1f 210M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/20 229M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/21 259M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/22 237M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/23 357M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/24 219M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/25 238M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/26 151M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/27 311M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/28 218M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/29 348M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/2a 271M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/2b 293M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/2c 255M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/2d 226M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/2e 318M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/2f 255M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/30 228M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/31 268M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/32 274M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/33 228M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/34 238M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/35 358M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/36 211M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/37 211M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/38 290M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/39 379M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/3a 222M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/3b 310M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/3c 304M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/3d 208M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/3e 175M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/3f 279M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/40 375M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/41 216M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/42 275M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/43 258M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/44 227M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/45 238M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/46 344M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/47 373M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/48 517M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/49 224M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/4a 200M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/4b 253M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/4c 219M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/4d 196M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/4e 307M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/4f 253M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/50 254M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/51 335M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/52 268M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/53 201M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/54 240M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/55 274M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/56 273M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/57 219M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/58 166M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/59 241M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/5a 226M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/5b 327M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/5c 286M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/5d 324M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/5e 253M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/5f 334M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/60 422M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/61 231M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/62 320M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/63 278M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/64 198M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/65 296M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/66 283M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/67 327M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/68 211M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/69 299M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/6a 145M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/6b 287M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/6c 235M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/6d 305M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/6e 299M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/6f 317M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/70 207M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/71 254M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/72 279M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/73 252M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/74 250M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/75 248M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/76 197M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/77 330M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/78 211M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/79 347M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/7a 321M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/7b 327M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/7c 303M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/7d 251M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/7e 294M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/7f 231M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/80 227M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/81 294M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/82 193M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/83 306M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/84 352M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/85 196M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/86 210M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/87 235M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/88 247M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/89 155M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/8a 214M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/8b 283M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/8c 218M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/8d 301M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/8e 254M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/8f 271M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/90 240M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/91 233M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/92 272M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/93 246M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/94 249M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/95 201M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/96 240M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/97 232M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/98 279M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/99 265M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/9a 306M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/9b 278M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/9c 227M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/9d 309M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/9e 241M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/9f 294M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/a0 232M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/a1 118M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/a2 243M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/a3 300M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/a4 236M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/a5 230M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/a6 231M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/a7 172M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/a8 186M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/a9 326M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/aa 258M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/ab 309M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/ac 248M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/ad 248M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/ae 188M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/af 185M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/b0 240M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/b1 212M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/b2 204M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/b3 261M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/b4 300M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/b5 195M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/b6 263M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/b7 254M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/b8 207M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/b9 314M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/ba 323M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/bb 236M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/bc 240M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/bd 287M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/be 210M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/bf 206M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/c0 179M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/c1 351M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/c2 382M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/c3 206M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/c4 365M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/c5 207M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/c6 264M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/c7 333M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/c8 322M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/c9 214M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/ca 188M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/cb 231M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/cc 214M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/cd 215M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/ce 245M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/cf 247M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/d0 344M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/d1 236M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/d2 291M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/d3 277M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/d4 228M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/d5 190M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/d6 368M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/d7 242M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/d8 210M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/d9 234M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/da 292M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/db 280M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/dc 331M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/dd 284M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/de 188M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/df 272M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/e0 250M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/e1 388M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/e2 302M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/e3 280M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/e4 241M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/e5 314M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/e6 286M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/e7 202M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/e8 186M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/e9 187M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/ea 221M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/eb 176M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/ec 364M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/ed 338M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/ee 185M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/ef 225M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/f0 199M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/f1 213M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/f2 419M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/f3 300M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/f4 260M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/f5 237M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/f6 292M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/f7 288M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/f8 258M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/f9 317M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/fa 356M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/fb 275M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/fc 234M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/fd 191M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/fe 230M .SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/ff ```
200 * 16 * 16 = 51,200. So let us proceed entry by entry in this folder. ```bash adb shell mkdir /sdcard/.SeedVaultAndroidBackup/ adb push 17* .nomedia /sdcard/.SeedVaultAndroidBackup/ ``` ``` 1708227601084/: 72 files pushed, 0 skipped. 155.2 MB/s (1201287096 bytes in 7.380s) 1709435066582/: 1 file pushed, 0 skipped. 0.0 MB/s (247 bytes in 0.010s) 1709435646089/: 33 files pushed, 0 skipped. 11.1 MB/s (9943528 bytes in 0.856s) 1709517498938/: 1 file pushed, 0 skipped. 0.0 MB/s (303 bytes in 0.028s) 1723337088655/: 3 files pushed, 0 skipped. 124.9 MB/s (156220123 bytes in 1.193s) 1723417751383/: 35 files pushed, 0 skipped. 104.7 MB/s (600078344 bytes in 5.465s) 1723471255467/: 32 files pushed, 0 skipped. 156.7 MB/s (1224990237 bytes in 7.454s) 1723488545190/: 89 files pushed, 0 skipped. 127.8 MB/s (2454143189 bytes in 18.315s) .nomedia: 1 file pushed, 0 skipped. 0.2 MB/s (43 bytes in 0.000s) 267 files pushed, 0 skipped. 132.2 MB/s (5646663110 bytes in 40.724s) ``` ```bash adb shell mkdir /sdcard/.SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/ adb push * /sdcard/.SeedVaultAndroidBackup/4bd6f001a7b663fe.sv/; matrix-commander -m 'Push finished!' ```
Output: ``` 00/: 19 files pushed, 0 skipped. 116.0 MB/s (123751935 bytes in 1.017s) 01/: 30 files pushed, 0 skipped. 111.9 MB/s (324664885 bytes in 2.768s) 02/: 27 files pushed, 0 skipped. 120.8 MB/s (323491621 bytes in 2.554s) 03/: 28 files pushed, 0 skipped. 120.2 MB/s (261185606 bytes in 2.072s) 04/: 21 files pushed, 0 skipped. 108.4 MB/s (233504183 bytes in 2.055s) 05/: 29 files pushed, 0 skipped. 110.6 MB/s (276688086 bytes in 2.385s) 06/: 23 files pushed, 0 skipped. 100.4 MB/s (233690888 bytes in 2.220s) 07/: 28 files pushed, 0 skipped. 116.0 MB/s (349157069 bytes in 2.870s) 08/: 18 files pushed, 0 skipped. 118.7 MB/s (202529264 bytes in 1.627s) 09/: 28 files pushed, 0 skipped. 113.4 MB/s (328853847 bytes in 2.765s) 0a/: 24 files pushed, 0 skipped. 108.7 MB/s (247309818 bytes in 2.171s) 0b/: 32 files pushed, 0 skipped. 117.6 MB/s (322081362 bytes in 2.612s) 0c/: 22 files pushed, 0 skipped. 117.9 MB/s (192747998 bytes in 1.560s) 0d/: 24 files pushed, 0 skipped. 117.6 MB/s (250006738 bytes in 2.028s) 0e/: 35 files pushed, 0 skipped. 119.7 MB/s (285167984 bytes in 2.272s) 0f/: 30 files pushed, 0 skipped. 118.7 MB/s (292066473 bytes in 2.346s) 10/: 39 files pushed, 0 skipped. 120.9 MB/s (403567862 bytes in 3.185s) 11/: 33 files pushed, 0 skipped. 116.9 MB/s (398377138 bytes in 3.251s) 12/: 22 files pushed, 0 skipped. 104.0 MB/s (193678453 bytes in 1.777s) 13/: 25 files pushed, 0 skipped. 116.5 MB/s (236826923 bytes in 1.939s) 14/: 34 files pushed, 0 skipped. 112.6 MB/s (354494033 bytes in 3.004s) 15/: 29 files pushed, 0 skipped. 111.5 MB/s (314122550 bytes in 2.688s) 16/: 28 files pushed, 0 skipped. 107.8 MB/s (304484571 bytes in 2.694s) 17/: 24 files pushed, 0 skipped. 114.2 MB/s (257529523 bytes in 2.151s) 1708211516067.SeedSnap: 1 file pushed, 0 skipped. 0.1 MB/s (96 bytes in 0.001s) 1723486518987.SeedSnap: 1 file pushed, 0 skipped. 217.3 MB/s (981412 bytes in 0.004s) 1724644800389.SeedSnap: 1 file pushed, 0 skipped. 205.6 MB/s (1083023 bytes in 0.005s) 18/: 28 files pushed, 0 skipped. 108.4 MB/s (300071313 bytes in 2.639s) 19/: 33 files pushed, 0 skipped. 123.5 MB/s (343798844 bytes in 2.656s) 1a/: 21 files pushed, 0 skipped. 130.4 MB/s (207815232 bytes in 1.519s) 1b/: 13 files pushed, 0 skipped. 112.4 MB/s (154630474 bytes in 1.312s) 1c/: 28 files pushed, 0 skipped. 118.7 MB/s (253415715 bytes in 2.037s) 1d/: 24 files pushed, 0 skipped. 115.2 MB/s (215973015 bytes in 1.789s) 1e/: 32 files pushed, 0 skipped. 110.4 MB/s (315344417 bytes in 2.724s) 1f/: 25 files pushed, 0 skipped. 112.3 MB/s (302124245 bytes in 2.566s) 20/: 22 files pushed, 0 skipped. 120.9 MB/s (219606540 bytes in 1.732s) 21/: 23 files pushed, 0 skipped. 118.7 MB/s (239818548 bytes in 1.928s) 22/: 30 files pushed, 0 skipped. 111.2 MB/s (270571983 bytes in 2.320s) 23/: 22 files pushed, 0 skipped. 117.1 MB/s (247977995 bytes in 2.019s) 24/: 31 files pushed, 0 skipped. 108.0 MB/s (373923733 bytes in 3.303s) 25/: 21 files pushed, 0 skipped. 112.8 MB/s (229231003 bytes in 1.938s) 26/: 22 files pushed, 0 skipped. 115.9 MB/s (249184054 bytes in 2.051s) 27/: 15 files pushed, 0 skipped. 122.1 MB/s (157738293 bytes in 1.232s) 28/: 31 files pushed, 0 skipped. 109.2 MB/s (325020973 bytes in 2.839s) 29/: 26 files pushed, 0 skipped. 114.3 MB/s (227510644 bytes in 1.898s) 2a/: 32 files pushed, 0 skipped. 112.6 MB/s (364374884 bytes in 3.086s) 2b/: 28 files pushed, 0 skipped. 123.3 MB/s (283280994 bytes in 2.191s) 2c/: 31 files pushed, 0 skipped. 115.4 MB/s (306559646 bytes in 2.534s) 2d/: 28 files pushed, 0 skipped. 131.1 MB/s (266454720 bytes in 1.939s) 2e/: 24 files pushed, 0 skipped. 113.4 MB/s (236254806 bytes in 1.988s) 2f/: 33 files pushed, 0 skipped. 121.6 MB/s (332334735 bytes in 2.607s) 30/: 27 files pushed, 0 skipped. 118.2 MB/s (266308100 bytes in 2.149s) 31/: 25 files pushed, 0 skipped. 105.5 MB/s (238682391 bytes in 2.157s) 32/: 30 files pushed, 0 skipped. 125.6 MB/s (280603579 bytes in 2.131s) 33/: 31 files pushed, 0 skipped. 105.4 MB/s (286214098 bytes in 2.590s) 34/: 22 files pushed, 0 skipped. 104.8 MB/s (238753554 bytes in 2.174s) 35/: 26 files pushed, 0 skipped. 111.3 MB/s (249146813 bytes in 2.135s) 36/: 33 files pushed, 0 skipped. 114.8 MB/s (374720669 bytes in 3.113s) 37/: 21 files pushed, 0 skipped. 115.5 MB/s (220608461 bytes in 1.822s) 38/: 22 files pushed, 0 skipped. 115.5 MB/s (220257099 bytes in 1.819s) 39/: 28 files pushed, 0 skipped. 125.5 MB/s (302859884 bytes in 2.302s) 3a/: 35 files pushed, 0 skipped. 114.6 MB/s (395962091 bytes in 3.294s) 3b/: 21 files pushed, 0 skipped. 113.7 MB/s (232118096 bytes in 1.947s) 3c/: 26 files pushed, 0 skipped. 121.8 MB/s (324080897 bytes in 2.537s) 3d/: 28 files pushed, 0 skipped. 119.7 MB/s (317665707 bytes in 2.530s) 3e/: 19 files pushed, 0 skipped. 110.0 MB/s (217451995 bytes in 1.885s) 3f/: 16 files pushed, 0 skipped. 101.2 MB/s (182841255 bytes in 1.723s) 40/: 32 files pushed, 0 skipped. 113.0 MB/s (291631330 bytes in 2.462s) 41/: 35 files pushed, 0 skipped. 113.5 MB/s (392622608 bytes in 3.298s) 42/: 24 files pushed, 0 skipped. 121.6 MB/s (226106497 bytes in 1.773s) 43/: 28 files pushed, 0 skipped. 104.0 MB/s (287580352 bytes in 2.637s) 44/: 25 files pushed, 0 skipped. 117.5 MB/s (269893454 bytes in 2.190s) 45/: 25 files pushed, 0 skipped. 119.1 MB/s (237424312 bytes in 1.901s) 46/: 23 files pushed, 0 skipped. 110.7 MB/s (248252958 bytes in 2.139s) 47/: 28 files pushed, 0 skipped. 113.0 MB/s (359885482 bytes in 3.038s) 48/: 31 files pushed, 0 skipped. 121.7 MB/s (389870921 bytes in 3.055s) 49/: 40 files pushed, 0 skipped. 115.7 MB/s (541045288 bytes in 4.461s) 4a/: 29 files pushed, 0 skipped. 122.6 MB/s (234544125 bytes in 1.824s) 4b/: 22 files pushed, 0 skipped. 118.8 MB/s (209078243 bytes in 1.678s) 4c/: 24 files pushed, 0 skipped. 106.3 MB/s (264472193 bytes in 2.374s) 4d/: 29 files pushed, 0 skipped. 118.1 MB/s (229209944 bytes in 1.851s) 4e/: 22 files pushed, 0 skipped. 111.9 MB/s (205259155 bytes in 1.749s) 4f/: 25 files pushed, 0 skipped. 113.3 MB/s (320789504 bytes in 2.701s) 50/: 25 files pushed, 0 skipped. 112.0 MB/s (264198839 bytes in 2.250s) 51/: 26 files pushed, 0 skipped. 121.3 MB/s (265362289 bytes in 2.086s) 52/: 30 files pushed, 0 skipped. 113.2 MB/s (350865579 bytes in 2.956s) 53/: 29 files pushed, 0 skipped. 112.9 MB/s (279829747 bytes in 2.364s) 54/: 20 files pushed, 0 skipped. 120.6 MB/s (209605865 bytes in 1.658s) 55/: 25 files pushed, 0 skipped. 131.3 MB/s (251049961 bytes in 1.823s) 56/: 27 files pushed, 0 skipped. 115.5 MB/s (286738980 bytes in 2.367s) 57/: 31 files pushed, 0 skipped. 125.7 MB/s (285432933 bytes in 2.166s) 58/: 23 files pushed, 0 skipped. 114.1 MB/s (228946082 bytes in 1.913s) 59/: 20 files pushed, 0 skipped. 102.3 MB/s (173185987 bytes in 1.615s) 5a/: 28 files pushed, 0 skipped. 111.3 MB/s (251793655 bytes in 2.158s) 5b/: 24 files pushed, 0 skipped. 116.6 MB/s (235968470 bytes in 1.929s) 5c/: 32 files pushed, 0 skipped. 115.7 MB/s (341892319 bytes in 2.818s) 5d/: 23 files pushed, 0 skipped. 113.1 MB/s (299341244 bytes in 2.524s) 5e/: 31 files pushed, 0 skipped. 115.4 MB/s (338862001 bytes in 2.801s) 5f/: 27 files pushed, 0 skipped. 114.5 MB/s (264924730 bytes in 2.206s) 60/: 32 files pushed, 0 skipped. 121.3 MB/s (348939937 bytes in 2.744s) 61/: 42 files pushed, 0 skipped. 118.0 MB/s (441619878 bytes in 3.569s) 62/: 25 files pushed, 0 skipped. 109.8 MB/s (241382475 bytes in 2.097s) 63/: 31 files pushed, 0 skipped. 119.0 MB/s (334574789 bytes in 2.682s) 64/: 30 files pushed, 0 skipped. 121.6 MB/s (290927856 bytes in 2.281s) 65/: 22 files pushed, 0 skipped. 123.5 MB/s (207229070 bytes in 1.600s) 66/: 35 files pushed, 0 skipped. 118.3 MB/s (309901547 bytes in 2.497s) 67/: 32 files pushed, 0 skipped. 109.7 MB/s (295923156 bytes in 2.574s) 68/: 33 files pushed, 0 skipped. 115.5 MB/s (341793233 bytes in 2.822s) 69/: 23 files pushed, 0 skipped. 113.1 MB/s (220716320 bytes in 1.860s) 6a/: 26 files pushed, 0 skipped. 114.7 MB/s (313159035 bytes in 2.604s) 6b/: 17 files pushed, 0 skipped. 108.1 MB/s (151561910 bytes in 1.338s) 6c/: 28 files pushed, 0 skipped. 108.6 MB/s (300096924 bytes in 2.636s) 6d/: 26 files pushed, 0 skipped. 105.4 MB/s (245828667 bytes in 2.225s) 6e/: 29 files pushed, 0 skipped. 109.1 MB/s (318548958 bytes in 2.785s) 6f/: 30 files pushed, 0 skipped. 115.6 MB/s (312614839 bytes in 2.580s) 70/: 33 files pushed, 0 skipped. 112.3 MB/s (331354378 bytes in 2.814s) 71/: 26 files pushed, 0 skipped. 113.5 MB/s (216510445 bytes in 1.819s) 72/: 26 files pushed, 0 skipped. 116.8 MB/s (265240729 bytes in 2.166s) 73/: 27 files pushed, 0 skipped. 115.6 MB/s (291254249 bytes in 2.402s) 74/: 24 files pushed, 0 skipped. 116.9 MB/s (263115035 bytes in 2.146s) 75/: 27 files pushed, 0 skipped. 121.0 MB/s (261374262 bytes in 2.060s) 76/: 26 files pushed, 0 skipped. 111.8 MB/s (259594838 bytes in 2.214s) 77/: 26 files pushed, 0 skipped. 113.1 MB/s (206182686 bytes in 1.739s) 78/: 31 files pushed, 0 skipped. 108.3 MB/s (345457879 bytes in 3.042s) 79/: 23 files pushed, 0 skipped. 98.4 MB/s (220558877 bytes in 2.139s) 7a/: 31 files pushed, 0 skipped. 105.5 MB/s (363041683 bytes in 3.280s) 7b/: 28 files pushed, 0 skipped. 114.9 MB/s (335950559 bytes in 2.788s) 7c/: 31 files pushed, 0 skipped. 114.8 MB/s (342139166 bytes in 2.842s) 7d/: 29 files pushed, 0 skipped. 112.9 MB/s (316763032 bytes in 2.676s) 7e/: 25 files pushed, 0 skipped. 114.9 MB/s (262157500 bytes in 2.175s) 7f/: 31 files pushed, 0 skipped. 115.5 MB/s (307237426 bytes in 2.537s) 80/: 21 files pushed, 0 skipped. 113.3 MB/s (241899118 bytes in 2.037s) 81/: 23 files pushed, 0 skipped. 129.0 MB/s (237721630 bytes in 1.757s) 82/: 27 files pushed, 0 skipped. 127.4 MB/s (307190629 bytes in 2.300s) 83/: 26 files pushed, 0 skipped. 120.4 MB/s (201568570 bytes in 1.596s) 84/: 33 files pushed, 0 skipped. 114.3 MB/s (319461249 bytes in 2.666s) 85/: 31 files pushed, 0 skipped. 120.0 MB/s (368657676 bytes in 2.929s) 86/: 21 files pushed, 0 skipped. 108.6 MB/s (204767446 bytes in 1.798s) 87/: 16 files pushed, 0 skipped. 108.9 MB/s (219055577 bytes in 1.918s) 88/: 25 files pushed, 0 skipped. 109.0 MB/s (246074197 bytes in 2.154s) 89/: 25 files pushed, 0 skipped. 120.4 MB/s (257978245 bytes in 2.044s) 8a/: 15 files pushed, 0 skipped. 120.3 MB/s (161482929 bytes in 1.280s) 8b/: 21 files pushed, 0 skipped. 114.0 MB/s (223394580 bytes in 1.869s) 8c/: 33 files pushed, 0 skipped. 110.8 MB/s (295899624 bytes in 2.547s) 8d/: 23 files pushed, 0 skipped. 104.9 MB/s (227994992 bytes in 2.072s) 8e/: 32 files pushed, 0 skipped. 100.7 MB/s (314684837 bytes in 2.981s) 8f/: 25 files pushed, 0 skipped. 112.8 MB/s (265586071 bytes in 2.246s) 90/: 29 files pushed, 0 skipped. 126.7 MB/s (283425274 bytes in 2.134s) 91/: 24 files pushed, 0 skipped. 118.4 MB/s (250885841 bytes in 2.021s) 92/: 24 files pushed, 0 skipped. 114.9 MB/s (244004929 bytes in 2.026s) 93/: 31 files pushed, 0 skipped. 112.8 MB/s (284254837 bytes in 2.404s) 94/: 26 files pushed, 0 skipped. 110.3 MB/s (256747785 bytes in 2.220s) 95/: 24 files pushed, 0 skipped. 113.4 MB/s (260595205 bytes in 2.191s) 96/: 20 files pushed, 0 skipped. 99.6 MB/s (210209633 bytes in 2.013s) 97/: 25 files pushed, 0 skipped. 111.7 MB/s (251264598 bytes in 2.146s) 98/: 23 files pushed, 0 skipped. 117.3 MB/s (242212649 bytes in 1.970s) 99/: 28 files pushed, 0 skipped. 112.6 MB/s (291273394 bytes in 2.467s) 9a/: 29 files pushed, 0 skipped. 103.5 MB/s (276794121 bytes in 2.549s) 9b/: 33 files pushed, 0 skipped. 111.9 MB/s (319855272 bytes in 2.726s) 9c/: 30 files pushed, 0 skipped. 115.3 MB/s (290953647 bytes in 2.406s) 9d/: 26 files pushed, 0 skipped. 118.5 MB/s (236742728 bytes in 1.906s) 9e/: 28 files pushed, 0 skipped. 114.5 MB/s (323275370 bytes in 2.693s) 9f/: 24 files pushed, 0 skipped. 120.5 MB/s (251728263 bytes in 1.993s) a0/: 28 files pushed, 0 skipped. 125.0 MB/s (307318879 bytes in 2.345s) a1/: 26 files pushed, 0 skipped. 100.2 MB/s (242571412 bytes in 2.309s) a2/: 15 files pushed, 0 skipped. 119.6 MB/s (123217621 bytes in 0.982s) a3/: 24 files pushed, 0 skipped. 104.0 MB/s (253653032 bytes in 2.327s) a4/: 28 files pushed, 0 skipped. 114.8 MB/s (313966502 bytes in 2.608s) a5/: 26 files pushed, 0 skipped. 113.2 MB/s (247070104 bytes in 2.082s) a6/: 23 files pushed, 0 skipped. 111.3 MB/s (240125275 bytes in 2.057s) a7/: 24 files pushed, 0 skipped. 108.9 MB/s (241631103 bytes in 2.116s) a8/: 16 files pushed, 0 skipped. 115.3 MB/s (179312395 bytes in 1.483s) a9/: 20 files pushed, 0 skipped. 125.8 MB/s (194094517 bytes in 1.472s) aa/: 34 files pushed, 0 skipped. 112.7 MB/s (341433733 bytes in 2.889s) ab/: 23 files pushed, 0 skipped. 120.0 MB/s (269824939 bytes in 2.144s) ac/: 30 files pushed, 0 skipped. 127.1 MB/s (323505311 bytes in 2.427s) ad/: 28 files pushed, 0 skipped. 112.6 MB/s (259384724 bytes in 2.197s) ae/: 29 files pushed, 0 skipped. 121.2 MB/s (259159796 bytes in 2.039s) af/: 23 files pushed, 0 skipped. 101.4 MB/s (196685857 bytes in 1.849s) b0/: 20 files pushed, 0 skipped. 125.0 MB/s (193347176 bytes in 1.475s) b1/: 25 files pushed, 0 skipped. 118.5 MB/s (250892091 bytes in 2.020s) b2/: 21 files pushed, 0 skipped. 117.9 MB/s (221451537 bytes in 1.791s) b3/: 24 files pushed, 0 skipped. 118.5 MB/s (213116184 bytes in 1.715s) b4/: 27 files pushed, 0 skipped. 111.6 MB/s (273161009 bytes in 2.334s) b5/: 29 files pushed, 0 skipped. 117.3 MB/s (313720433 bytes in 2.551s) b6/: 21 files pushed, 0 skipped. 100.5 MB/s (203313137 bytes in 1.930s) b7/: 28 files pushed, 0 skipped. 108.9 MB/s (274556144 bytes in 2.405s) b8/: 24 files pushed, 0 skipped. 117.4 MB/s (265840618 bytes in 2.160s) b9/: 25 files pushed, 0 skipped. 114.0 MB/s (216368604 bytes in 1.811s) ba/: 33 files pushed, 0 skipped. 117.3 MB/s (328383434 bytes in 2.669s) bb/: 37 files pushed, 0 skipped. 118.1 MB/s (337892124 bytes in 2.728s) bc/: 21 files pushed, 0 skipped. 111.5 MB/s (246400906 bytes in 2.108s) bd/: 25 files pushed, 0 skipped. 113.6 MB/s (250376338 bytes in 2.102s) be/: 31 files pushed, 0 skipped. 111.6 MB/s (300238180 bytes in 2.567s) bf/: 25 files pushed, 0 skipped. 105.0 MB/s (218938937 bytes in 1.989s) c0/: 26 files pushed, 0 skipped. 109.7 MB/s (215274723 bytes in 1.871s) c1/: 21 files pushed, 0 skipped. 109.9 MB/s (187265601 bytes in 1.625s) c2/: 36 files pushed, 0 skipped. 109.5 MB/s (367240215 bytes in 3.198s) c3/: 34 files pushed, 0 skipped. 111.3 MB/s (399396026 bytes in 3.422s) c4/: 25 files pushed, 0 skipped. 118.5 MB/s (215137616 bytes in 1.731s) c5/: 33 files pushed, 0 skipped. 112.1 MB/s (382245512 bytes in 3.252s) c6/: 21 files pushed, 0 skipped. 101.2 MB/s (216068441 bytes in 2.036s) c7/: 26 files pushed, 0 skipped. 115.0 MB/s (276063708 bytes in 2.288s) c8/: 30 files pushed, 0 skipped. 116.2 MB/s (348669737 bytes in 2.862s) c9/: 31 files pushed, 0 skipped. 107.3 MB/s (336850969 bytes in 2.994s) ca/: 27 files pushed, 0 skipped. 113.9 MB/s (223624386 bytes in 1.872s) cb/: 20 files pushed, 0 skipped. 103.1 MB/s (196366766 bytes in 1.817s) cc/: 24 files pushed, 0 skipped. 116.1 MB/s (241808042 bytes in 1.987s) cd/: 23 files pushed, 0 skipped. 112.0 MB/s (223154428 bytes in 1.899s) ce/: 28 files pushed, 0 skipped. 125.6 MB/s (224869855 bytes in 1.707s) cf/: 25 files pushed, 0 skipped. 104.3 MB/s (255685239 bytes in 2.338s) d0/: 26 files pushed, 0 skipped. 119.2 MB/s (258037239 bytes in 2.064s) d1/: 36 files pushed, 0 skipped. 114.5 MB/s (359818858 bytes in 2.997s) d2/: 27 files pushed, 0 skipped. 110.6 MB/s (246433625 bytes in 2.126s) d3/: 30 files pushed, 0 skipped. 114.6 MB/s (303815143 bytes in 2.528s) d4/: 25 files pushed, 0 skipped. 109.6 MB/s (289884282 bytes in 2.522s) d5/: 24 files pushed, 0 skipped. 111.2 MB/s (238310305 bytes in 2.045s) d6/: 22 files pushed, 0 skipped. 106.4 MB/s (198835126 bytes in 1.782s) d7/: 38 files pushed, 0 skipped. 109.4 MB/s (385296201 bytes in 3.360s) d8/: 23 files pushed, 0 skipped. 110.9 MB/s (252496790 bytes in 2.170s) d9/: 19 files pushed, 0 skipped. 116.6 MB/s (219969424 bytes in 1.799s) da/: 21 files pushed, 0 skipped. 107.2 MB/s (244593989 bytes in 2.175s) db/: 28 files pushed, 0 skipped. 123.7 MB/s (305761889 bytes in 2.358s) dc/: 24 files pushed, 0 skipped. 113.5 MB/s (293191572 bytes in 2.462s) dd/: 31 files pushed, 0 skipped. 117.4 MB/s (346368644 bytes in 2.814s) de/: 30 files pushed, 0 skipped. 119.6 MB/s (296602987 bytes in 2.365s) df/: 20 files pushed, 0 skipped. 118.2 MB/s (196528350 bytes in 1.586s) e0/: 31 files pushed, 0 skipped. 115.6 MB/s (284741503 bytes in 2.349s) e1/: 28 files pushed, 0 skipped. 113.0 MB/s (261239994 bytes in 2.205s) e2/: 34 files pushed, 0 skipped. 113.7 MB/s (406426263 bytes in 3.410s) e3/: 31 files pushed, 0 skipped. 117.5 MB/s (315673885 bytes in 2.562s) e4/: 31 files pushed, 0 skipped. 109.8 MB/s (293065118 bytes in 2.545s) e5/: 26 files pushed, 0 skipped. 114.7 MB/s (252066127 bytes in 2.096s) e6/: 28 files pushed, 0 skipped. 115.4 MB/s (328011873 bytes in 2.711s) e7/: 30 files pushed, 0 skipped. 109.9 MB/s (298886059 bytes in 2.594s) e8/: 22 files pushed, 0 skipped. 107.9 MB/s (211283804 bytes in 1.867s) e9/: 19 files pushed, 0 skipped. 120.4 MB/s (194458854 bytes in 1.540s) ea/: 21 files pushed, 0 skipped. 107.5 MB/s (195309289 bytes in 1.732s) eb/: 24 files pushed, 0 skipped. 94.2 MB/s (230623258 bytes in 2.334s) ec/: 21 files pushed, 0 skipped. 101.4 MB/s (183951407 bytes in 1.730s) ed/: 33 files pushed, 0 skipped. 109.2 MB/s (381129153 bytes in 3.329s) ee/: 30 files pushed, 0 skipped. 107.2 MB/s (353766352 bytes in 3.147s) ef/: 21 files pushed, 0 skipped. 108.0 MB/s (192973404 bytes in 1.704s) f0/: 25 files pushed, 0 skipped. 120.6 MB/s (234793009 bytes in 1.856s) f1/: 23 files pushed, 0 skipped. 105.7 MB/s (208081543 bytes in 1.878s) f2/: 23 files pushed, 0 skipped. 106.3 MB/s (222891224 bytes in 2.000s) f3/: 38 files pushed, 0 skipped. 113.3 MB/s (438071916 bytes in 3.689s) f4/: 29 files pushed, 0 skipped. 123.7 MB/s (313634107 bytes in 2.417s) f5/: 23 files pushed, 0 skipped. 114.6 MB/s (271725942 bytes in 2.261s) f6/: 24 files pushed, 0 skipped. 125.2 MB/s (247320934 bytes in 1.884s) f7/: 32 files pushed, 0 skipped. 111.7 MB/s (305219677 bytes in 2.605s) f8/: 30 files pushed, 0 skipped. 113.8 MB/s (300906523 bytes in 2.521s) f9/: 27 files pushed, 0 skipped. 109.4 MB/s (269660645 bytes in 2.351s) fa/: 29 files pushed, 0 skipped. 123.7 MB/s (331883197 bytes in 2.559s) fb/: 38 files pushed, 0 skipped. 113.9 MB/s (372590798 bytes in 3.120s) fc/: 27 files pushed, 0 skipped. 108.0 MB/s (287269096 bytes in 2.536s) fd/: 26 files pushed, 0 skipped. 106.3 MB/s (244121021 bytes in 2.189s) fe/: 24 files pushed, 0 skipped. 115.3 MB/s (198995603 bytes in 1.646s) ff/: 27 files pushed, 0 skipped. 126.4 MB/s (240688361 bytes in 1.816s) 6819 files pushed, 0 skipped. 114.0 MB/s (69867469816 bytes in 584.676s) ```
![Screenshot_20240826-201002_Seedvault](https://github.com/user-attachments/assets/864f39f7-b75c-4db5-b4f4-47adac39c11a) ![Screenshot_20240826-201323_Seedvault](https://github.com/user-attachments/assets/efaa3d35-946a-44f7-b6b9-52539824505c) ![Screenshot_20240826-201328_Seedvault](https://github.com/user-attachments/assets/994a0a76-1254-4ed3-9950-6877cf716a55) ![Screenshot_20240826-201406_Seedvault](https://github.com/user-attachments/assets/d5491f47-5d71-434c-b613-bdb0eaf0d5d8) ![Screenshot_20240826-201411_Seedvault](https://github.com/user-attachments/assets/f48c8ccb-08d7-44bb-9c90-55cacb3ed3d6) ![Screenshot_20240826-201418_Seedvault](https://github.com/user-attachments/assets/dc87d320-bec0-4507-992b-b66844918671) ![Screenshot_20240826-201423_Seedvault](https://github.com/user-attachments/assets/167a7e68-d918-4ffc-b5fe-9b88e164c89c) ![Screenshot_20240826-201427_Seedvault](https://github.com/user-attachments/assets/757c3d21-06a2-4e47-bfed-f4cc8cec6555) ![Screenshot_20240826-201436_Seedvault](https://github.com/user-attachments/assets/72f0d8fc-7603-41a5-baef-bd1d06848b8b) ![Screenshot_20240826-201748_Seedvault](https://github.com/user-attachments/assets/14c21189-930d-4291-a066-154e21ed4eb0) ![Screenshot_20240826-201756_Seedvault](https://github.com/user-attachments/assets/0cd22487-559d-44e4-a9e1-531942709135) ![Screenshot_20240826-201801_Seedvault](https://github.com/user-attachments/assets/20773709-550b-4179-8bd6-9d22e4af2fed) ![Screenshot_20240826-201807_Seedvault](https://github.com/user-attachments/assets/539e5954-636b-4ce3-97f7-89437226fb6c) ![Screenshot_20240826-202024_Seedvault](https://github.com/user-attachments/assets/c3927702-6c61-4169-a6e1-4afa08b241ba) ![Screenshot_20240826-202029_Seedvault](https://github.com/user-attachments/assets/94181b15-8584-4206-8cf5-375aff8a603a) ![Screenshot_20240826-202037_Seedvault](https://github.com/user-attachments/assets/554399a7-ac56-4d22-b239-4cd007b26387) ![Screenshot_20240826-202043_Seedvault](https://github.com/user-attachments/assets/bd36b734-ad19-490c-87f5-83e88595170e) ![Screenshot_20240826-202056_Trebuchet](https://github.com/user-attachments/assets/e5ab1e2c-4a08-45d7-80af-8f756c43f480) ![Screenshot_20240826-203637_Settings](https://github.com/user-attachments/assets/d487408c-f9c2-4b38-9852-0ed5413606b4) ![Screenshot_20240826-205925_Trebuchet](https://github.com/user-attachments/assets/613352b5-9cd4-4837-b4d4-c76d07b91368) ![image](https://github.com/user-attachments/assets/709f0b06-70c7-444c-a284-4a0d3445bb29) - Keyboard is still qwerty (*Android Keyboard (AOSP)* app > *Languages* > disable *Android Keyboard (AOSP)* > *Use system languages* and *Active input methods* > *English (US)*). It seems to disappear from all apps scroll up menu, also disable *Settings* > *System* > *Keyboard* > *Tools* > *Spell checker* - Fingerprint model - *System* > *Status bar* > *Battery percentage* is *Hidden* while should have restored *Next to the icon* - *System* > *Buttons* > *Power button* > *Long press for torch* is disabled while should have restored it as enabled - SeedVault settings themselves do not seem restored (but same recovery code), settings being: - *Export settings* > enable *Unlimited app quota* - enable *App backup* > *Backup my apps* (disable *Automatic restore*) - *Storage backup (beta)* > *Backup my files* - Bluetooth *Saved devices* not restored - *Recorder* > *Settings* > *Tag your recordings with your current position* and *Record in high quality* seem not restored ![image](https://github.com/user-attachments/assets/d2f5d1bd-2647-40f2-a4c2-08469b1b9ec0) ![image](https://github.com/user-attachments/assets/6c145627-03ef-4fba-a940-5be0f22fdb87) ![image](https://github.com/user-attachments/assets/b57bc226-1545-4c75-bb32-0578a981998d) ![image](https://github.com/user-attachments/assets/8b043163-adc5-4e66-affa-baa48c5fc4c9) So need to rely on `/sdcard/` being `adb pull`ed. Actually quite impressive all apps are at their location, the background is the correct one. Let us verify that all apps are indeed restored. ```bash diff <(sort apps.txt) <(sort apps_bis.txt) adb shell cmd package list packages -3 > apps_bis.txt ``` ```diff 2d1 < package:com.android.fmradio 22d20 < package:org.openfoodfacts.scanner ``` So nothing chocking in the context of #84. Let us now review app data app by app: - aFreeRDP does not have usual connections but I am unsure I even set one previously, if I remember correctly SeedVault complained about not saving it as not used recently - Aurora Store still logged with my Google account - Calculator no history - Calendar is empty, even if go to *Settings* - Clock *Alarm* and *Timer* restored - Contacts seems correctly restored - Discord still logged in - Electrum still requests password to *Open Wallet* - Element requests signing in - EteSync seems empty - Searching *Tor* still mentions the *Guardian Project* *Repository* - Fennec correctly restores my tabs, history, account and add-ons (notably Dark Reader *Site List* and uBlock *My Filters*) it seems - Files: `/sdcard/Documents/administrative/` is correctly restored for instance - K-9 restores correctly my email addresses and their emails - Messaging still have my SMS (I do not notice the discussion were I had 2 MMS) - OpenKeychain seems to still have keys - Organic Maps downloaded maps are reset but bookmarks and history are kept - Phone *Recents* kept but *Favorites* lost, while the app closes when play a call recording, they seem correctly stored in `/sdcard/Recordings/Call records/` - Recorder mentions a recording that I did today for testing but cannot remember when precisely it has been done, otherwise `/sdcard/Recordings/Sound records/` mentions `.flac` files that I remember, see [Benjamin_Loison/android_packages_apps_Recorder/issues/4](https://codeberg.org/Benjamin_Loison/android_packages_apps_Recorder/issues/4) - RustDesk still mentions previous *Connection*s - Settings *Add text on lock screen* has been kept - Signal has been reinitialized but the 2 backups in `/sdcard/Documents/signal/` seems to have an expected size - Termux has been reinitialized (I verified with `ls`) - WhatsApp has been reinitialized, see [Benjamin_Loison/WhatsApp/issues/15](https://codeberg.org/Benjamin_Loison/WhatsApp/issues/15) Call and call quiet and loud speaker work fine. SMS sending seems to work fine, could not test reception as own phone number has not worked this time. Front and back cameras seem to work fine. Recorder also works fine. 5G also works fine. Wifi also works fine. The LineageOS installed is the 21/08/24 being Android 14. *Factory reset* and *Advanced* > *Reboot to recovery*. Try without initializing manually and then with initialization if necessary. ```bash time nc -lp 5555 > /dev/block/sda11 ``` ``` ^C 149m31.70s real 1m04.88s user 47m44.60s system ``` ```bash adb forward tcp:4444 tcp:5555 dd if=sda skip=30320232 count=465516912 | pv -s 256G | nc localhost 4444; matrix-commander -m 'nc finished!' ``` ``` 465516912+0 records iniB/s] [==============================================================================> ] 86% ETA 0:21:49 465516912+0 records out 238344658944 bytes (238 GB, 222 GiB) copied, 8793.68 s, 27.1 MB/s 221GiB 2:26:33 [25.8MiB/s] [==============================================================================> ] 86% ``` ```bash adb shell dd if=/dev/block/sda skip=30320232 count=465516912 | pv -s 256G | sha512sum; echo $?; matrix-commander -m 'Hash finished!' ``` ``` 465516912+0 records iniB/s] [==============================================================================> ] 86% ETA 0:19:02 465516912+0 records out 238344658944 bytes (222 G) copied, 7243.206 s, 31 M/s 221GiB 2:00:47 [31.4MiB/s] [==============================================================================> ] 86% db13de090c925c53fe6250297df7eae90c797c8bac90a351d1ca4bdffab6eba30d7d864fd56f4e83d8ee3b91c471d15ae80398248fc95f3a487992cb29f30473 - 0 ``` Can verify with previous hash generated. They match. Especially useful verification as for an unknown reason the laptop was looking suspend. Maybe I was wrong as the power led blinks as if it was suspending while the computer is running with 100 % of battery. Maybe related to [Benjamin-Loison/cinnamon/issues/129](https://github.com/Benjamin-Loison/cinnamon/issues/129). *Reboot system now* ![image](https://github.com/user-attachments/assets/700678c5-c1cc-418f-88e3-967c266bb1a6) *Try again* does not help. *Power off* and power on physically results in the same error, even again after *Try again*. ![image](https://github.com/user-attachments/assets/cb4b790c-632b-4fa7-82e4-535b94c19895) After formatting it boots well and redirects to LineageOS initialization. *Factory reset* > *Format data/factory reset* > *Format data* and *Advanced* > *Reboot to recovery*. ```bash time nc -lp 5555 > /dev/block/sda ``` ``` ^C 609m58.56s real 0m37.90s user 11m55.87s system ``` ```bash adb forward tcp:4444 tcp:5555 cat sda | pv -s 256G | nc localhost 4444; matrix-commander -m 'nc finished!' ``` ``` 4444 236GiB 2:32:37 [26.4MiB/s] [=============================> ] 92% ``` ```bash adb shell dd if=/dev/block/sda | pv -s 256G | diff sda -; echo $?; matrix-commander -m 'diff finished!' ``` ``` 495837184+0 records iniB/s] [===================================================================================> ] 92% ETA 0:10:31 495837184+0 records out 253868638208 bytes (236 G) copied, 7668.669 s, 32 M/s 236GiB 2:07:53 [31.6MiB/s] [===================================================================================> ] 92% 0 ``` *Reboot system now*. ![image](https://github.com/user-attachments/assets/5fa613b1-2d53-4774-bb8f-3b325147dc9e) ![image](https://github.com/user-attachments/assets/2e9f1f47-65bb-49d6-86e6-bd8b45a832b2) ![image](https://github.com/user-attachments/assets/3a4d3a19-a810-403d-9e62-22e2453e6ead) Password does not seem to work fine. It is possible that have not restored somehow something mattering for the password/decryption. The keyboard is in azerty and I do not believe that somehow it is actually working as qwerty as after factory reset. *Wrong password* while I am pretty sure to correctly type it, as I failed 7 times no matter recopying from a visual plaintext source and *Restart* does not help. Note that not even temporarily the characters I type are shown, *Emergency* does not help in seeing if keystrokes are correctly understood. Note that after 5 tries I had a message to wait 30 seconds before next try. I hope that contrarily to Apple devices it is not an exponential scale if I remember correctly. Note that the 7th try was bit requiring waiting. Also have to wait 30 seconds after 10 tries, no matter having reboot after the 7th try. Note that I have ADB access, notably as `root`. `scrcpy` does not seem to have a feature like send clipboard as keystrokes. Note that in theory even with `root`, the phone is encrypted so I cannot look for a magick command like [Benjamin_Loison/Debian/issues/67](https://codeberg.org/Benjamin_Loison/Debian/issues/67). First having an adb command to automatically type the password in a regular environment and then test it here would deserve being precise scientifically. Note that no graphical interaction should be done to be the most precise as possible, so no automatic click on the screen to type keystrokes for instance, only purely send a string to the phone. Similarly only proceed to password itself typing and validating etc as seeing whether or not the password is typed seems pretty clear and is the only thing doubtful. As far as I remember password need to be escape if they contain special characters which is my case, so definitely need a regular environment... For prototyping can use another app like Signal *Note to Self*, due to #1, to see if the wanted characters are typed before binary evaluation during login. Well in fact Signal is not installed and I do not want to restore a backup, nor setup a new environment. Even without sending message can use *Messaging* with own phone number. Pay attention to switch to azerty keyboard. *Stay awake* *Developer option* can help. Note that instead of just escaping my password, provide a code to escape passwords in general to make it public even if it is limited to alphabet, digits and only my special characters. My password seems strong enough to leak what special characters it contains. So can factory reset, just set such a regular environment without restoring any data, just prototyping the automatic login. Then factory reset, rewrite `sda` and try this automatic login. If it still fails, then let us forget bit by bit restoration on a factory reset/new phone. Note that it would mean have to rely on SeedVault and app by app backup, which is not redundantly safe for some apps not being backed by SeedVault, so have to work both on SeedVault to make it back up more things and on app by app backup to make sure that they are correct, as just a single failure may result for some aspects in data loss. So have to pay attention to data not correctly store with SeedVault as it means that we need to back them up. Also note that currently have not taken all these precations so maybe already lost a bit of data no matter what I do. To summarize SeedVault missing data (and data I saved app by app): - aFreeRDP connections if any - Calculator no history - Calendar is empty (saved) - Element requests signing in (maybe saved thanks to Element of Linux Mint 22 Cinnamon Framework 13) - EteSync seems empty (related to above *Calendar*) - Messaging MMS should be investigated - Organic Maps - Phone *Favorites* lost - Signal has been reinitialized (saved) - Termux has been reinitialized (saved) - WhatsApp has been reinitialized (saved) So actually only lost it seems: - aFreeRDP connections if any - Calculator history - EteSync configuration - Messaging MMS should be investigated - Organic Maps - Phone *Favorites* which is quite ok. As SeedVault automatically restore data of most apps, it is better to use it than manual app by app backup. Well no password escape seems necessary in fact ` adb shell input text PASSWORD` (source: [the Stack Overflow question 29072501](https://stackoverflow.com/q/29072501)) works fine both on Messaging and when login (I verified 5 times for the latter, including one just after *Restart*) even with my special characters being `[]+{}_:` (order randomly shuffled and other bracket added), in addition to lowercase, uppercase alphabets and digits. Note that after *Restart* first password prompt and following ones show temporarily the last character typed. So this looks suspicious that it is not the case in the bit by bit case. As it is open-source could in theory later on investigate what is wrong. ```bash time nc -lp 5555 > /dev/block/sda ``` ``` ^C 152m16.15s real 0m38.98s user 12m07.24s system ``` ```bash adb forward tcp:4444 tcp:5555 cat sda | pv -s 256G | nc localhost 4444; matrix-commander -m 'nc finished!' ``` ``` 236GiB 2:29:57 [26.9MiB/s] [=============================> ] 92% ``` ```bash adb shell dd if=/dev/block/sda | pv -s 256G | diff sda -; echo $?; matrix-commander -m 'diff finished!' ``` ``` 495837184+0 records iniB/s] [===================================================================================> ] 92% ETA 0:12:12 495837184+0 records out 253868638208 bytes (236 G) copied, 8272.190 s, 29 M/s 236GiB 2:17:56 [29.3MiB/s] [===================================================================================> ] 92% 0 ``` *Reboot system now.* As expected, manually typing my password does not make login work fine, same with above `adb` command (I tried about 5 times each) and verified twice that the number of bullets is the same as the password length that is 16 so let us forget bit by bit restoration on factory reset or another phone. Note that I paid attention during this process to use the identical command and password that worked in a regular environment. So I am not able to access my session to verify as above data and also firmware.

Should test both

I think that I prefer ideally bit by bit restoration, so let us try with SeedVault.

So have to manually:

adb push termux-backup.tar.gz /sdcard/
termux-backup.tar.gz: 1 file pushed, 0...7 MB/s (23755000567 bytes in 917.924s)

No need for termux-setup-storage, the Termux app permissions are correctly restored, hence file access.

tar -zxf /sdcard/termux-backup.tar.gz -C /data/data/com.termux/files --recursive-unlink --preserve-permissions; matrix-commander -m 'Untar finished!'
2024-08-28 00:35:45,535:    ERROR: matrix-commander: E219: Error during sending. Continuing despite error. Exception: Cannot connect to host matrix.org:443 ssl:default [No address associated with hostname]
2024-08-28 00:35:45,536:     INFO: matrix-commander: 1 error and 0 warnings occurred.

Source: https://wiki.termux.com/wiki/Backing_up_Termux

Termux is indeed not able to access the Internet after EXIT:

ping 8.8.8.8
socket: Connection refused

Force stop and Open does not help. Maybe it is due to the fact that it is a most recent version of Termux, see Benjamin-Loison/termux-api/issues/18.

VERSION=0.118.1
FILE_NAME=termux-app_$VERSION+github-debug_arm64-v8a.apk
#wget https://github.com/termux/termux-app/releases/download/v$VERSION/$FILE_NAME

adb install $FILE_NAME

does not help. Note that it keeps the data.

Related to Improve_websites_thanks_to_open_source/issues/936.

Rebooting does not help, even after uninstalling Termux:API and Termux:Boot.

If uninstall Termux and re-install it from F-Droid, then ping works fine.

https://github.com/termux/termux-app https://github.com/termux/termux-app/commit/c2d57f2ed810b6fa854a6c9ab0ecee4aac38a0cc https://github.com/termux/termux-app/actions/runs/10581503562/job/29318946780 https://github.com/termux/termux-app/actions/runs/10581503562/artifacts/1860474698

FILE_NAME=termux-app_v0.118.0+c2d57f2-apt-android-7-github-debug_arm64-v8a
unzip $FILE_NAME.zip
rm $FILE_NAME.zip output-metadata.json
adb uninstall com.termux
adb install $FILE_NAME.apk
rm $FILE_NAME.apk

Still have working ping. After data restore and EXIT ping still works and Matrix message is correctly sent according to Termux but on my Linux Mint 22 Cinnamon Framework 13 for instance I get Unable to decrypt message. If I remember correctly I already restored Termux previously to this factory reset and noticed the same Unable to decrypt message.

adb install termux-api_v0.50.1+c553bc2-github-debug.apk
Performing Streamed Install
Success
adb install termux-boot-app_v0.8.1+613dc98.github.debug.apk
Performing Streamed Install
Success

The priority is on backing up, notably automating it, restoration can be automated later on as it happens less than backing up.

Benjamin-Loison commented 2 months ago

For contacts:

The following contacts have additional fields than name and phone number (can also be an avatar):

-----BEGIN PGP MESSAGE-----

hF4DTQa9Wom5MBgSAQdA9QaPo5oq+XrIFavwPBVX7qPCeSLULEXqtl+s2KJFvCkw
7befFSOZaD2svMvIzsGQsspVpLw+crQBcL8DmSoFRVPPuUjDw5I1eUXYzzkGblpH
0ncBdHH+klm6onaSuLepB7SVxc1vIQT9izsy9/J+VvUv+h0oSglD/z5vUVxtw1JU
Oz7Z7Wax3olbPzoJUGg1WA8+L9fSd+FaEqdnOcnxmcKiYX7lc4pYKB9XqJ396GNb
4Q3J7QtPDchAdWa/E1X4AA9Yn3eAHITGGA==
=TN/y
-----END PGP MESSAGE-----

LineageOS/android_packages_apps_Dialer does not seem to have selection (and export) feature and Settings does not seem to help.

Benjamin-Loison commented 2 months ago

Concerning Fennec only the synchronized History is unclear. Concerning add-ons I have Dark Reader, SponsorBlock and uBlock. For uBlock:

Rules: ``` ! 2023-05-27 https://www.dna.fr www.dna.fr##.fadeInDown.GWEB_cmp_alternative.mod ! 2023-08-11 http://example.com example.com##[href="https://www.iana.org/domains/example"] ! 2023-09-19 https://www.ledauphine.com www.ledauphine.com##.fadeInDown.GWEB_cmp_alternative.mod ! 2023-11-29 https://www.lexpress.fr www.lexpress.fr##.bottom-bar__jaune.active.bottom-bar ! 2023-12-11 https://www.transilien.com www.transilien.com###block-broadcastingblock ! 2023-12-20 https://www.sncf-connect.com www.sncf-connect.com##.css-13ljlxe.MuiCard-root.MuiPaper-elevation1.MuiPaper-rounded.MuiPaper-elevation.MuiPaper-root ! 2024-01-06 https://www.marmiton.org www.marmiton.org##div.mrtn-hide-on-print.mrtn_format www.marmiton.org##.ad-container-sticky.ad-container-banner_atf-mobile ! 2024-01-11 https://crypto.stackexchange.com crypto.stackexchange.com###overlay-header ! 2024-01-30 https://www.fedex.com www.fedex.com##trk-shared-shop-runner-app-banner ! 2024-03-23 https://fr.openfoodfacts.org fr.openfoodfacts.org##.success.expand.large.button ! 2024-04-04 https://m.youtube.com ! 2024-04-08 https://www.marmiton.org www.marmiton.org##.ad-container-300_atf.ad-container www.marmiton.org##div.ad-container-dyninfeed.ad-container ! 2024-04-18 https://en.m.wikipedia.org en.m.wikipedia.org##.banner-container ! 2024-04-19 https://fr.m.wikipedia.org fr.m.wikipedia.org##.banner-container ! 2024-05-02 https://app.slack.com app.slack.com##.p-global_trial_entry_cta.c-button--medium.c-button--primary.c-button ! Jul 2, 2024 https://m.youtube.com m.youtube.com##ytm-watch-metadata-app-promo-renderer ```

image

So see Files.

For the History:

image

image

Firefox History, History > Search history and Manage history do not seem to help.

Firefox Account does not seem to help too.

image

Firefox view synchronized History on DuckDuckGo and Google returns only the following interesting results among the first pages of results.

https://www.reddit.com/r/firefox/comments/13yfelg/i_need_to_see_the_history_per_device/ https://superuser.com/q/1335450

https://forum.f-droid.org/t/fennec-is-it-necessary-to-opt-out-of-the-adb-backups/12112/12 is the only relevant result when search first page of results on DuckDuckGo and Google Fennec export whole history.

If Firefox history sync to phone, then maybe export phone one somehow. It does not seem to be the case.

Related to Benjamin_Loison/fennecbuild/issues/4.

Benjamin-Loison commented 2 months ago

Concerning Files:

date && adb shell du -sh /sdcard/
Sun Aug 11 01:28:59 AM CEST 2024
139G    /sdcard/
adb pull /sdcard/

locally creates sdcard/ folder.

Related to Benjamin_Loison/android_packages_apps_Recorder/issues/{4,5}.

Benjamin-Loison commented 2 months ago

Concerning Termux:

date && time du -sh ..
Sun Aug 11 01:27:37 CEST 2024
34G ..

real    0m37.755s
user    0m0.963s
sys 0m16.177s
termux-backup --help
Output: ``` Usage: termux-backup [options] [output file] Script for backing up Termux installation directory, $PREFIX. It WILL NOT backup your home directory. Options: -h, --help Show this information. -f, --force Force write operations. --ignore-read-failure Suppress read permission denials. Backup is performed as TAR archive. Compression is determined by output file extension. If file name is '-', then tarball is written to stdout and is uncompressed. ```

So for getting a progress have to proceed manually.

tar -zcf /sdcard/termux-backup.tar.gz -C /data/data/com.termux/files ./home ./usr
tar: ./home/bens_folder/termux/temperature.txt: file changed as we read it
tar: ./home/.gnupg/S.keyboxd: socket ignored
tar: ./home/.gnupg/S.gpg-agent: socket ignored
tar: ./home/.gnupg/S.gpg-agent.extra: socket ignored
tar: ./home/.gnupg/S.gpg-agent.browser: socket ignored
tar: ./home/.gnupg/S.gpg-agent.ssh: socket ignored
tar: ./usr/var/run/cron.reboot: Cannot open: Permission denied
tar: Exiting with failure status due to previous errors
ls -lh /sdcard/termux-backup.tar.gz
-rw-rw---- 1 root everybody 22G Aug 11 02:04 /sdcard/termux-backup.tar.gz
progress
[32737] tar /data/data/com.termux/files/home/.cache/pip/http/8/e/2/d/2/8e2d264aa5c82974f5cce6c6f1ab4306ad5dc56121462699938f5afb
    71.1% (2.1 MiB / 2.9 MiB)

[32738] gzip /storage/emulated/0/termux-backup.tar.gz
    100.0% (597 MiB / 597 MiB)

Then see Files.

Being able to run from adb would avoid having free space on the phone to keep this archive, see Improve_websites_thanks_to_open_source/issues/389. Maybe adb pull is somehow able to do so without compression but have to pay attention to permissions etc.

In fact when treat Files it backups /data/data/com.termux/files/ the question is are permissions still fine? But I am fine fixing them if necessary to avoid having another Termux copy.

I finally have doubts that the Termux files are in /sdcard/:

pwd
/data/data/com.termux/files/home
ls -lah /sdcard/Android/data/com.termux/files/total 7.0K
drwxrwx--- 2 u0_a298 everybody 3.5K Aug 31  2022 .
drwxrwx--- 3 u0_a298 everybody 3.5K Aug 31  2022 ..
adb shell ls -lh /
...
drwxrwx--x  54 system system    4.0K 2024-08-15 16:40 data
...
adb shell whoami
root
adb shell ls -lh /data
...
drwxrwx--x 251 system   system    52K 2024-08-11 21:55 data
adb shell ls -lh /data/data/
...
drwx------  6 u0_a145        u0_a145        3.3K 2023-03-03 21:21 com.termux
...
adb shell ls -lh /data/data/com.termux/
drwxrws--x 4 u0_a145 u0_a145_cache 3.3K 2024-02-18 00:37 cache
drwxrws--x 2 u0_a145 u0_a145_cache 3.3K 2023-03-03 21:21 code_cache
drwxrwx--x 4 u0_a145 u0_a145       3.3K 2023-08-12 01:07 files
drwxrwx--x 2 u0_a145 u0_a145       3.3K 2024-08-15 16:41 shared_prefs
adb shell ls -lh /data/data/com.termux/files/
total 7
drwx------ 21 u0_a145 u0_a145 8.0K 2024-08-16 22:29 home
drwx------ 13 u0_a145 u0_a145 3.3K 2023-11-23 01:22 usr
adb shell ls -lh /data/data/com.termux/files/home
total 6
drwx------ 15 u0_a145 u0_a145 3.3K 2024-08-07 19:35 bens_folder
drwx------  2 u0_a145 u0_a145 3.3K 2024-03-15 09:01 downloads
-rw-------  1 u0_a145 u0_a145    0 2024-08-16 22:29 ggxkcie5
time adb shell find -name ggxkcie5 2> /dev/null
./data/data/com.termux/files/home/ggxkcie5
./data/user/0/com.termux/files/home/ggxkcie5
./data_mirror/data_ce/null/0/com.termux/files/home/ggxkcie5

real    2m21.701s
user    0m0.009s
sys 0m0.064s

Note that in recovery on Fairphone 4 even with Mount /mnt/system/:

adb shell ls /sdcard/

does not return anything.

adb shell ls /mnt/system/
acct
apex
bin
bootstrap-apex
bugreports
cache
config
d
data
data_mirror
debug_ramdisk
dev
etc
init
init.environ.rc
linkerconfig
lost+found
metadata
mnt
odm
odm_dlkm
oem
postinstall
proc
product
sdcard
second_stage_resources
storage
sys
system
system_dlkm
system_ext
tmp
vendor
vendor_dlkm
adb shell ls /mnt/system/sdcard/
ls: /mnt/system/sdcard/: No such file or directory
adb shell ls /mnt/system/data/

does not return anything.

adb shell ls /mnt/system/data/data/
ls: /mnt/system/data/data/: No such file or directory

so does not give access to Termux data, it makes quite sense as it should require decryption and I do not provide my password at any point.

adb shell ls /data/data/com.termux/files/
ls: /data/data/com.termux/files/: Permission denied
adb shell whoami
shell
adb root
adbd cannot run as root in production builds
adb ls /
000041ed 00001000 495c0780 product
000041ed 00001000 495c0780 res
000041ed 00001000 495c0780 debug_ramdisk
000041ed 00001000 495c0780 vendor
000041c0 00004000 495c0780 lost+found
0000a1a4 00000011 495c0780 d
0000a1a4 0000000b 495c0780 bin
000041ed 00001000 495c0780 oem
0000a1a4 00000015 495c0780 sdcard
000041f9 00001000 5edd0314 data
000041ed 000010cc 66bfc419 dev
0000a1a4 00000013 495c0780 charger
000041ed 00000118 0957f5ae apex
000041ed 00001000 495c0780 .
000041ed 00000064 66bfc43e storage
000041ed 00001000 495c0780 odm
0000a1a4 0000000b 495c0780 etc
0000416d 00000000 0957f5ab acct
000041e8 00001000 495c0780 sbin
0000a1a4 00000018 495c0780 product_services
000041ed 00001000 495c0780 system
000041ed 00000000 00000001 config
0000a1a4 00000032 495c0780 bugreports
0000416d 00000000 0957f5ab sys
0000a180 00000017 495c0780 default.prop
000041ed 00000104 0957f5ad mnt
0000416d 00000000 00000000 proc
000041ed 00001000 495c0780 ..
adb pull /data/
/data/: 0 files pulled, 0 skipped.
adb shell ls /data/
ls: /data/: Permission denied
adb shell ls /data/data/
ls: /data/data/: Permission denied
adb shell ls /data/data/com.termux/
ls: /data/data/com.termux/: Permission denied

FileZilla:

Status: Retrieving directory listing of "/data/data"...
Command:    cd "/data/data"
Error:  Directory /data/data: permission denied
Error:  Failed to retrieve directory listing

/data/data/com.termux/ can be downloaded correctly however by wifi it is a bit slow. So related to Benjamin-Loison/termux-app/issues/22. With USB tethering the download bandwidth is great but the discovery of files is too slow as it seems perfomed interactively. So generating and downloading tar may be faster or even downloading tar on the fly would be the best.

FileZilla finally in 12 minutes downloaded 64,095 files for:

-----BEGIN PGP MESSAGE-----

hF4DTQa9Wom5MBgSAQdAFz4a3qxBU0zoEfN7vvD79B2/us7tYWY67hrvMnPlR3Qw
jpqZvWGuqjpUrM9TWEiesSNHeu4iHdKaMp/SzgzTCLJHF1YsFu7OMh5CFqssD9Zp
0kABy7Nxo9e17Rx27bsZQd6pd+xonilHKjwr+rOL3CJ1Vh/aXRBSuOS6KCLVUvvR
coP0mcBrgYbjOLAjQ2xhMCWH
=uzsR
-----END PGP MESSAGE-----

but failed for 20 files:

/com.termux/files/home/.gnupg/S.gpg-agent.ssh
/com.termux/files/home/.gnupg/S.keyboxd
/com.termux/files/home/.gnupg/S.gpg-agent.browser
/com.termux/files/home/.gnupg/S.gpg-agent
/com.termux/files/home/.gnupg/S.dirmngr
/com.termux/files/home/.gnupg/S.gpg-agent.extra
/com.termux/files/usr/libexec/git-core/git-citool
/com.termux/files/usr/var/run/cron.reboot
/com.termux/files/usr/var/service/crond/log/supervise/control
/com.termux/files/usr/var/service/crond/supervise/control
/com.termux/files/usr/var/service/sshd/supervise/control
/com.termux/files/usr/var/service/sshd/log/supervise/control
/com.termux/files/usr/var/service/httpd/supervise/control
/com.termux/files/usr/var/service/httpd/log/supervise/control
/com.termux/files/usr/var/service/crond/log/supervise/ok
/com.termux/files/usr/var/service/sshd/log/supervise/ok
/com.termux/files/usr/var/service/crond/supervise/ok
/com.termux/files/usr/var/service/httpd/log/supervise/ok
/com.termux/files/usr/var/service/httpd/supervise/ok
/com.termux/files/usr/var/service/sshd/supervise/ok

Why has it failed?

No issue due to restore, as in theory not Termux noticeable restoration, as only proceeded to bit by bit restorations.

Are these files important?

cat ~/../usr/var/run/cron.reboot
cat: /data/data/com.termux/files/home/../usr/var/run/cron.reboot: Permission denied

Note that `~/../usr/var/spool/cron/whoami`` is wherecrontab -l` is stored.

Related to the Super User question 1009623.

ls ~/.gnupg/
S.gpg-agent          S.gpg-agent.ssh  private-keys-v1.d  sshcontrol
S.gpg-agent.browser  S.keyboxd        public-keys.d      trustdb.gpg
S.gpg-agent.extra    common.conf      random_seed

gpg --list-secret-keys shows that I have all my phone private keys on my Linux Mint 22 Cinnamon Framework 13 laptop so it is fine anyway.

tar --help
Output: ``` Usage: tar [OPTION...] [FILE]... GNU 'tar' saves many files together into a single tape or disk archive, and can restore individual files from the archive. Examples: tar -cf archive.tar foo bar # Create archive.tar from files foo and bar. tar -tvf archive.tar # List all files in archive.tar verbosely. tar -xf archive.tar # Extract all files from archive.tar. Main operation mode: -A, --catenate, --concatenate append tar files to an archive -c, --create create a new archive --delete delete from the archive (not on mag tapes!) -d, --diff, --compare find differences between archive and file system -r, --append append files to the end of an archive --test-label test the archive volume label and exit -t, --list list the contents of an archive -u, --update only append files newer than copy in archive -x, --extract, --get extract files from an archive Operation modifiers: --check-device check device numbers when creating incremental archives (default) -g, --listed-incremental=FILE handle new GNU-format incremental backup -G, --incremental handle old GNU-format incremental backup --hole-detection=TYPE technique to detect holes --ignore-failed-read do not exit with nonzero on unreadable files --level=NUMBER dump level for created listed-incremental archive --no-check-device do not check device numbers when creating incremental archives --no-seek archive is not seekable -n, --seek archive is seekable --occurrence[=NUMBER] process only the NUMBERth occurrence of each file in the archive; this option is valid only in conjunction with one of the subcommands --delete, --diff, --extract or --list and when a list of files is given either on the command line or via the -T option; NUMBER defaults to 1 --sparse-version=MAJOR[.MINOR] set version of the sparse format to use (implies --sparse) -S, --sparse handle sparse files efficiently Local file name selection: --add-file=FILE add given FILE to the archive (useful if its name starts with a dash) -C, --directory=DIR change to directory DIR --exclude=PATTERN exclude files, given as a PATTERN --exclude-backups exclude backup and lock files --exclude-caches exclude contents of directories containing CACHEDIR.TAG, except for the tag file itself --exclude-caches-all exclude directories containing CACHEDIR.TAG --exclude-caches-under exclude everything under directories containing CACHEDIR.TAG --exclude-ignore=FILE read exclude patterns for each directory from FILE, if it exists --exclude-ignore-recursive=FILE read exclude patterns for each directory and its subdirectories from FILE, if it exists --exclude-tag=FILE exclude contents of directories containing FILE, except for FILE itself --exclude-tag-all=FILE exclude directories containing FILE --exclude-tag-under=FILE exclude everything under directories containing FILE --exclude-vcs exclude version control system directories --exclude-vcs-ignores read exclude patterns from the VCS ignore files --no-null disable the effect of the previous --null option --no-recursion avoid descending automatically in directories --no-unquote do not unquote input file or member names --no-verbatim-files-from -T treats file names starting with dash as options (default) --null -T reads null-terminated names; implies --verbatim-files-from --recursion recurse into directories (default) -T, --files-from=FILE get names to extract or create from FILE --unquote unquote input file or member names (default) --verbatim-files-from -T reads file names verbatim (no escape or option handling) -X, --exclude-from=FILE exclude patterns listed in FILE File name matching options (affect both exclude and include patterns): --anchored patterns match file name start --ignore-case ignore case --no-anchored patterns match after any '/' (default for exclusion) --no-ignore-case case sensitive matching (default) --no-wildcards verbatim string matching --no-wildcards-match-slash wildcards do not match '/' --wildcards use wildcards (default for exclusion) --wildcards-match-slash wildcards match '/' (default for exclusion) Overwrite control: --keep-directory-symlink preserve existing symlinks to directories when extracting --keep-newer-files don't replace existing files that are newer than their archive copies -k, --keep-old-files don't replace existing files when extracting, treat them as errors --no-overwrite-dir preserve metadata of existing directories --one-top-level[=DIR] create a subdirectory to avoid having loose files extracted --overwrite overwrite existing files when extracting --overwrite-dir overwrite metadata of existing directories when extracting (default) --recursive-unlink empty hierarchies prior to extracting directory --remove-files remove files after adding them to the archive --skip-old-files don't replace existing files when extracting, silently skip over them -U, --unlink-first remove each file prior to extracting over it -W, --verify attempt to verify the archive after writing it Select output stream: --ignore-command-error ignore exit codes of children --no-ignore-command-error treat non-zero exit codes of children as error -O, --to-stdout extract files to standard output --to-command=COMMAND pipe extracted files to another program Handling of file attributes: --atime-preserve[=METHOD] preserve access times on dumped files, either by restoring the times after reading (METHOD='replace'; default) or by not setting the times in the first place (METHOD='system') --clamp-mtime only set time when the file is more recent than what was given with --mtime --delay-directory-restore delay setting modification times and permissions of extracted directories until the end of extraction --group=NAME force NAME as group for added files --group-map=FILE use FILE to map file owner GIDs and names --mode=CHANGES force (symbolic) mode CHANGES for added files --mtime=DATE-OR-FILE set mtime for added files from DATE-OR-FILE -m, --touch don't extract file modified time --no-delay-directory-restore cancel the effect of --delay-directory-restore option --no-same-owner extract files as yourself (default for ordinary users) --no-same-permissions apply the user's umask when extracting permissions from the archive (default for ordinary users) --numeric-owner always use numbers for user/group names --owner=NAME force NAME as owner for added files --owner-map=FILE use FILE to map file owner UIDs and names -p, --preserve-permissions, --same-permissions extract information about file permissions (default for superuser) --same-owner try extracting files with the same ownership as exists in the archive (default for superuser) --sort=ORDER directory sorting order: none (default), name or inode -s, --preserve-order, --same-order member arguments are listed in the same order as the files in the archive Handling of extended file attributes: --acls Enable the POSIX ACLs support --no-acls Disable the POSIX ACLs support --no-selinux Disable the SELinux context support --no-xattrs Disable extended attributes support --selinux Enable the SELinux context support --xattrs Enable extended attributes support --xattrs-exclude=MASK specify the exclude pattern for xattr keys --xattrs-include=MASK specify the include pattern for xattr keys Device selection and switching: --force-local archive file is local even if it has a colon -f, --file=ARCHIVE use archive file or device ARCHIVE -F, --info-script=NAME, --new-volume-script=NAME run script at end of each tape (implies -M) -L, --tape-length=NUMBER change tape after writing NUMBER x 1024 bytes -M, --multi-volume create/list/extract multi-volume archive --rmt-command=COMMAND use given rmt COMMAND instead of rmt --rsh-command=COMMAND use remote COMMAND instead of rsh --volno-file=FILE use/update the volume number in FILE Device blocking: -b, --blocking-factor=BLOCKS BLOCKS x 512 bytes per record -B, --read-full-records reblock as we read (for 4.2BSD pipes) -i, --ignore-zeros ignore zeroed blocks in archive (means EOF) --record-size=NUMBER NUMBER of bytes per record, multiple of 512 Archive format selection: -H, --format=FORMAT create archive of the given format FORMAT is one of the following: gnu GNU tar 1.13.x format oldgnu GNU format as per tar <= 1.12 pax POSIX 1003.1-2001 (pax) format posix same as pax ustar POSIX 1003.1-1988 (ustar) format v7 old V7 tar format --old-archive, --portability same as --format=v7 --pax-option=keyword[[:]=value][,keyword[[:]=value]]... control pax keywords --posix same as --format=posix -V, --label=TEXT create archive with volume name TEXT; at list/extract time, use TEXT as a globbing pattern for volume name Compression options: -a, --auto-compress use archive suffix to determine the compression program -I, --use-compress-program=PROG filter through PROG (must accept -d) -j, --bzip2 filter the archive through bzip2 -J, --xz filter the archive through xz --lzip filter the archive through lzip --lzma filter the archive through xz --lzop filter the archive through lzop --no-auto-compress do not use archive suffix to determine the compression program --zstd filter the archive through zstd -z, --gzip, --gunzip, --ungzip filter the archive through gzip -Z, --compress, --uncompress filter the archive through compress Local file selection: --backup[=CONTROL] backup before removal, choose version CONTROL --hard-dereference follow hard links; archive and dump the files they refer to -h, --dereference follow symlinks; archive and dump the files they point to -K, --starting-file=MEMBER-NAME begin at member MEMBER-NAME when reading the archive --newer-mtime=DATE compare date and time when data changed only -N, --newer=DATE-OR-FILE, --after-date=DATE-OR-FILE only store files newer than DATE-OR-FILE --one-file-system stay in local file system when creating archive -P, --absolute-names don't strip leading '/'s from file names --suffix=STRING backup before removal, override usual suffix ('~' unless overridden by environment variable SIMPLE_BACKUP_SUFFIX) File name transformations: --strip-components=NUMBER strip NUMBER leading components from file names on extraction --transform=EXPRESSION, --xform=EXPRESSION use sed replace EXPRESSION to transform file names Informative output: --checkpoint[=NUMBER] display progress messages every NUMBERth record (default 10) --checkpoint-action=ACTION execute ACTION on each checkpoint --full-time print file time to its full resolution --index-file=FILE send verbose output to FILE -l, --check-links print a message if not all links are dumped --no-quote-chars=STRING disable quoting for characters from STRING --quote-chars=STRING additionally quote characters from STRING --quoting-style=STYLE set name quoting style; see below for valid STYLE values -R, --block-number show block number within archive with each message --show-defaults show tar defaults --show-omitted-dirs when listing or extracting, list each directory that does not match search criteria --show-snapshot-field-ranges show valid ranges for snapshot-file fields --show-transformed-names, --show-stored-names show file or archive names after transformation --totals[=SIGNAL] print total bytes after processing the archive; with an argument - print total bytes when this SIGNAL is delivered; Allowed signals are: SIGHUP, SIGQUIT, SIGINT, SIGUSR1 and SIGUSR2; the names without SIG prefix are also accepted --utc print file modification times in UTC -v, --verbose verbosely list files processed --warning=KEYWORD warning control -w, --interactive, --confirmation ask for confirmation for every action Compatibility options: -o when creating, same as --old-archive; when extracting, same as --no-same-owner Other options: -?, --help give this help list --restrict disable use of some potentially harmful options --usage give a short usage message --version print program version Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options. The backup suffix is '~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX. The version control may be set with --backup or VERSION_CONTROL, values are: none, off never make backups t, numbered make numbered backups nil, existing numbered if numbered backups exist, simple otherwise never, simple always make simple backups Valid arguments for the --quoting-style option are: literal shell shell-always shell-escape shell-escape-always c c-maybe escape locale clocale *This* tar defaults to: --format=gnu -f- -b20 --quoting-style=escape --rmt-command=/usr/sbin/rmt --rsh-command=/usr/bin/rsh ```

That is:

...
  -c, --create               create a new archive
...
  -C, --directory=DIR        change to directory DIR
...
  -f, --file=ARCHIVE         use archive file or device ARCHIVE
...
  -z, --gzip, --gunzip, --ungzip   filter the archive through gzip
...
time ssh -p 8022 _gateway -t 'tar -zc -C /data/data/com.termux/files ./home ./usr | cat' > termux-backup.tar.gz; echo $?

However, for:

-----BEGIN PGP MESSAGE-----

hF4DTQa9Wom5MBgSAQdAQtIPM9bKVF/rs5IP6OYrLcxd3isoa0nPCxPwjM7YSWAw
6R75DHlu3W4iUhOEmD3iYnrAhuSsZ+ZhiFFBAtdan3JGehXCQHfuO9S39205jHws
0kABH/dtySaZ8tGukybf+eIMY75enxcahxhxaLYVrdeS54sMX/O1Q6Os/aX1rXZm
31cNsKDGovlt3AmTL6b7jDlO
=b7QD
-----END PGP MESSAGE-----

It seems stuck after 10 minutes at:

ls -l termux-backup.tar.gz
-rw-rw-r-- 1 CENSORED CENSORED 429014371 Aug 17 00:49 termux-backup.tar.gz

While:

du -sh com.termux/
6.5G    com.termux/
Fairphone 4 LineageOS completes but unsuccessfully it seems: ```bash time ssh -p 8022 _gateway -t 'tar -zc -C /data/data/com.termux/files ./home ./usr | cat' > termux-backup.tar.gz; echo $? ``` After 4 minutes seems stuck at: ```bash ls -l termux-backup.tar.gz ``` ``` -rw-rw-r-- 1 benjamin benjamin 1963607920 Aug 26 01:31 termux-backup.tar.gz ``` Maybe it is temporary but it does not seemed to be. Can have a verbose `tar` to see what it is doing? Maybe having the screen unlocked and Termux in foreground could help. Note that it happened with the app not being battery restrained. If proceed again it seems to complete: ```bash time ssh -p 8022 _gateway -t 'tar -zc -C /data/data/com.termux/files ./home ./usr | cat' > termux-backup.tar.gz; echo $? ``` ``` Connection to _gateway closed. real 31m55.910s user 1m55.849s sys 5m53.877s 0 ``` ```bash ls -l termux-backup.tar.gz ``` ``` -rw-rw-r-- 1 benjamin benjamin 23845371867 Aug 26 02:06 termux-backup.tar.gz ``` ```bash du -sh com.termux/ ``` ``` 38G com.termux/ ``` ```bash file termux-backup.tar.gz ``` ``` termux-backup.tar.gz: gzip compressed data, from Unix, original size modulo 2^32 168629121 gzip compressed data, unknown method, ASCII, has CRC, extra field, encrypted, from FAT filesystem (MS-DOS, OS/2, NT), original size modulo 2^32 168629121 ``` ```bash gunzip -t termux-backup.tar.gz ``` ``` gzip: termux-backup.tar.gz: invalid compressed data--format violated ``` Source: the Stack Overflow answer 2001749](https://stackoverflow.com/a/2001749) ```bash tar -xf termux-backup.tar.gz ``` ``` tar: Skipping to next header gzip: stdin: invalid compressed data--format violated tar: Child returned status 1 tar: Error is not recoverable: exiting now ``` ```bash tar -zcf /sdcard/termux-backup.tar.gz -C /data/data/com.termux/files ./home ./usr; echo $?; matrix-commander -m 'Tar finished!' ``` ```bash time gunzip -t termux-backup.tar.gz; echo $?; matrix-commander -m 'Verified' ``` ``` real 5m53.126s user 5m18.055s sys 0m21.654s 0 ``` ```bash adb pull /sdcard/termux-backup.tar.gz; matrix-commander -m 'Termux copy finished!' ``` ``` /sdcard/termux-backup.tar.gz: 1 file p...8 MB/s (23755000567 bytes in 615.132s) ``` ```bash termux-setup-storage ``` ```/data/data/com.termux/files/usr/bin/termux-setup-storage: line 29: 31966 Aborted am broadcast --user 0 --es com.termux.app.reload_style storage -a com.termux.app.reload_style com.termux > /dev/null ``` Instead providing the *Files* permission in *App info* works fine. ```bash time tar -zxf /sdcard/termux-backup.tar.gz -C /data/data/com.termux/files --recursive-unlink --preserve-permissions; echo $?; matrix-commander -m 'Termux restored!' ``` ``` 0 ``` On my Linux Mint 22 Cinnamon Framework 13 it results in *Unable to decrypt message*. Same issue if proceed again. Once `exit`, it works fine again. So should change for HTTPS alternative.

Concerning restoring:

mv /sdcard/authorized_keys ~/.ssh/
mv: cannot open '/sdcard/authorized_keys' for reading: Permission denied

As need to give internal storage access.

mkdir .ssh/
mkdir .ssh/
mkdir: cannot create directory ‘.ssh/’: File exists
vim .ssh/authorized_keys
The program vim is not installed. Install it by executing:
 pkg install vim
or
 pkg install vim-gtk, after running pkg install x11-repo
or
 pkg install vim-python
termux-clipboard-get
The program termux-clipboard-get is not installed. Install it by executing:
 pkg install termux-api
nano .ssh/authorized_keys
ifconfig
sshd
The program sshd is not installed. Install it by executing:
 pkg install openssh

Should apt update && apt upgrade -y && apt autoremove -y before:

pkg install openssh
No mirror or mirror group selected. You might want to select one by running 'termux-change-repo'
Testing the available mirrors:
[*] (10) https://packages-cf.termux.dev/apt/termux-main: ok
[*] (1) https://mirror.textcord.xyz/termux/termux-main: bad
[*] (1) https://mirror.nevacloud.com/applications/termux/termux-main: ok
[*] (1) https://mirrors.nguyenhoang.cloud/termux/termux-main: ok
[*] (1) https://mirror.twds.com.tw/termux/termux-main: ok
[*] (1) https://linux.domainesia.com/applications/termux/termux-main: ok
[*] (1) https://tmx.xvx.my.id/apt/termux-main: ok
[*] (1) https://mirror.freedif.org/termux/termux-main: ok
[*] (1) https://mirrors.cbrx.io/apt/termux/termux-main: ok
[*] (1) https://mirrors.in.sahilister.net/termux/termux-main/: ok
[*] (1) https://mirror.albony.in/termux/termux-main: ok
[*] (1) https://mirror.bardia.tech/termux/termux-main: bad
[*] (1) https://mirrors.sdu.edu.cn/termux/termux-main: ok
[*] (1) https://mirrors.sau.edu.cn/termux/apt/termux-main: ok
[*] (1) https://mirrors.nju.edu.cn/termux/apt/termux-main: ok
[*] (1) https://mirrors.sustech.edu.cn/termux/apt/termux-main: ok
[*] (1) https://mirrors.pku.edu.cn/termux/termux-main/: ok
[*] (1) https://mirror.sjtu.edu.cn/termux/termux-main/: ok
[*] (1) https://mirror.iscas.ac.cn/termux/apt/termux-main: ok
[*] (1) https://mirrors.ustc.edu.cn/termux/termux-main: ok
[*] (1) https://mirrors.aliyun.com/termux/termux-main: ok
[*] (1) https://mirrors.qvq.net.cn/termux/termux-main: ok
[*] (1) https://mirrors.cqupt.edu.cn/termux/termux-main: ok
[*] (1) https://mirrors.zju.edu.cn/termux/apt/termux-main: ok
[*] (1) https://mirrors.hust.edu.cn/termux/apt/termux-main: ok
[*] (1) https://mirrors.bfsu.edu.cn/termux/apt/termux-main: ok
[*] (1) https://mirror.nyist.edu.cn/termux/apt/termux-main: ok
[*] (1) https://mirrors.tuna.tsinghua.edu.cn/termux/apt/termux-main: ok
[*] (1) https://ftp.agdsn.de/termux/termux-main: ok
[*] (4) https://grimler.se/termux/termux-main: ok
[*] (1) https://ro.mirror.flokinet.net/termux/termux-main: ok
[*] (1) https://mirrors.cfe.re/termux/termux-main: bad
[*] (1) https://mirror.termux.dev/termux-main: bad
[*] (1) https://termux.3san.dev/termux/termux-main: ok
[*] (1) https://mirror.bouwhuis.network/termux/termux-main: ok
[*] (1) https://mirror.accum.se/mirror/termux.dev/termux-main: ok
[*] (1) https://termux.mentality.rip/termux-main: ok
[*] (1) https://is.mirror.flokinet.net/termux/termux-main: ok
[*] (1) https://md.mirrors.hacktegic.com/termux/termux-main: ok
[*] (1) https://termux.astra.in.ua/apt/termux-main: ok
[*] (1) https://mirror.mwt.me/termux/main: ok
[*] (1) https://mirrors.medzik.dev/termux/termux-main: ok
[*] (1) https://packages.termux.dev/apt/termux-main: ok
[*] (1) https://mirror.sunred.org/termux/termux-main: ok
[*] (1) https://mirrors.de.sahilister.net/termux/termux-main: ok
[*] (1) https://mirror.leitecastro.com/termux/termux-main: ok
[*] (1) https://termux.cdn.lumito.net/termux-main: ok
[*] (1) https://nl.mirror.flokinet.net/termux/termux-main: ok
[*] (1) https://ftp.fau.de/termux/termux-main: ok
[*] (1) https://termux.librehat.com/apt/termux-main: ok
[*] (1) https://mirror.autkin.net/termux/termux-main: ok
[*] (1) https://mirror.polido.pt/termux/termux-main: bad
[*] (1) https://dl.kcubeterm.com/termux-main: bad
[*] (1) https://termux.danyael.xyz/termux/termux-main: ok
[*] (1) https://mirror.mwt.me/termux/main: ok
[*] (1) https://mirrors.utermux.dev/termux/termux-main: ok
[*] (1) https://mirror.vern.cc/termux/termux-main: ok
[*] (1) https://plug-mirror.rcac.purdue.edu/termux/termux-main: ok
[*] (1) https://mirror.quantum5.ca/termux/termux-main: ok
[*] (1) https://mirror.fcix.net/termux/termux-main: ok
[*] (1) https://mirror.csclub.uwaterloo.ca/termux/termux-main: ok
[*] (1) https://mirror.endianness.com/termux/termux-main: ok
[*] (1) https://mirrors.rda.run/termux/termux-main: bad
[*] (1) https://repository.su/termux/termux-main/: ok
[*] (1) http://mirror.mephi.ru/termux/termux-main: bad
Picking mirror: (61) /data/data/com.termux/files/usr/etc/termux/mirrors/north_america/mirrors.utermux.dev
Get:1 https://mirrors.utermux.dev/termux/termux-main stable InRelease [14.0 kB]
Get:2 https://mirrors.utermux.dev/termux/termux-main stable/main aarch64 Packages [520 kB]
Fetched 534 kB in 4s (148 kB/s)
Reading package lists... Done
Building dependency tree... Done
25 packages can be upgraded. Run 'apt list --upgradable' to see them.
Reading package lists... Done
Building dependency tree... Done
The following additional packages will be installed:
  krb5 ldns libdb libedit libresolv-wrapper
  openssh-sftp-server termux-auth
The following NEW packages will be installed:
  krb5 ldns libdb libedit libresolv-wrapper
  openssh openssh-sftp-server termux-auth
0 upgraded, 8 newly installed, 0 to remove and 25 not upgraded.
Need to get 2669 kB of archives.
After this operation, 15.8 MB of additional disk space will be used.
Do you want to continue? [Y/n]
Get:1 https://mirrors.utermux.dev/termux/termux-main stable/main aarch64 libresolv-wrapper aarch64 1.1.7-4 [11.5 kB]
Get:2 https://mirrors.utermux.dev/termux/termux-main stable/main aarch64 libdb aarch64 18.1.40-4 [495 kB]
Get:3 https://mirrors.utermux.dev/termux/termux-main stable/main aarch64 krb5 aarch64 1.21.3 [900 kB]
Get:4 https://mirrors.utermux.dev/termux/termux-main stable/main aarch64 ldns aarch64 1.8.3-2 [303 kB]
Get:5 https://mirrors.utermux.dev/termux/termux-main stable/main aarch64 libedit aarch64 20240517-3.1-0 [79.2 kB]
Get:6 https://mirrors.utermux.dev/termux/termux-main stable/main aarch64 openssh-sftp-server aarch64 9.8p1-4 [47.8 kB]
Get:7 https://mirrors.utermux.dev/termux/termux-main stable/main aarch64 termux-auth aarch64 1.4-2 [6384 B]
Get:8 https://mirrors.utermux.dev/termux/termux-main stable/main aarch64 openssh aarch64 9.8p1-4 [828 kB]
Fetched 2669 kB in 2s (1194 kB/s)
Selecting previously unselected package libresolv-wrapper.
(Reading database ... 4248 files and directories currently installed.)
Preparing to unpack .../0-libresolv-wrapper_1.1.7-4_aarch64.deb ...
Unpacking libresolv-wrapper (1.1.7-4) ...
Selecting previously unselected package libdb.
Preparing to unpack .../1-libdb_18.1.40-4_aarch64.deb ...
Unpacking libdb (18.1.40-4) ...
Selecting previously unselected package krb5.
Preparing to unpack .../2-krb5_1.21.3_aarch64.deb ...
Unpacking krb5 (1.21.3) ...
Selecting previously unselected package ldns.
Preparing to unpack .../3-ldns_1.8.3-2_aarch64.deb ...
Unpacking ldns (1.8.3-2) ...
Selecting previously unselected package libedit.
Preparing to unpack .../4-libedit_20240517-3.1-0_aarch64.deb ...
Unpacking libedit (20240517-3.1-0) ...
Selecting previously unselected package openssh-sftp-server.
Preparing to unpack .../5-openssh-sftp-server_9.8p1-4_aarch64.deb ...
Unpacking openssh-sftp-server (9.8p1-4) ...
Selecting previously unselected package termux-auth.
Preparing to unpack .../6-termux-auth_1.4-2_aarch64.deb ...
Unpacking termux-auth (1.4-2) ...
Selecting previously unselected package openssh.
Preparing to unpack .../7-openssh_9.8p1-4_aarch64.deb ...
Unpacking openssh (9.8p1-4) ...
Setting up libedit (20240517-3.1-0) ...
Setting up openssh-sftp-server (9.8p1-4) ...
Setting up ldns (1.8.3-2) ...
Setting up libresolv-wrapper (1.1.7-4) ...
Setting up termux-auth (1.4-2) ...
Setting up libdb (18.1.40-4) ...
Setting up krb5 (1.21.3) ...
Setting up openssh (9.8p1-4) ...
Generating public/private rsa key pair.
Your identification has been saved in /data/data/com.termux/files/usr/etc/ssh/ssh_host_rsa_key
Your public key has been saved in /data/data/com.termux/files/usr/etc/ssh/ssh_host_rsa_key.pub
The key fingerprint is:
SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX u0_a224@localhost
The key's randomart image is:
+---[RSA 3072]----+
|XXXXXXXXXXXXXXXXX|
|XXXXXXXXXXXXXXXXX|
|XXXXXXXXXXXXXXXXX|
|XXXXXXXXXXXXXXXXX|
|XXXXXXXXXXXXXXXXX|
|XXXXXXXXXXXXXXXXX|
|XXXXXXXXXXXXXXXXX|
|XXXXXXXXXXXXXXXXX|
|XXXXXXXXXXXXXXXXX|
+----[SHA256]-----+
unknown key type dsa
Generating public/private ecdsa key pair.
Your identification has been saved in /data/data/com.termux/files/usr/etc/ssh/ssh_host_ecdsa_key
Your public key has been saved in /data/data/com.termux/files/usr/etc/ssh/ssh_host_ecdsa_key.pub
The key fingerprint is:
SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX u0_a224@localhost
The key's randomart image is:
+---[ECDSA 256]---+
|XXXXXXXXXXXXXXXXX|
|XXXXXXXXXXXXXXXXX|
|XXXXXXXXXXXXXXXXX|
|XXXXXXXXXXXXXXXXX|
|XXXXXXXXXXXXXXXXX|
|XXXXXXXXXXXXXXXXX|
|XXXXXXXXXXXXXXXXX|
|XXXXXXXXXXXXXXXXX|
|XXXXXXXXXXXXXXXXX|
+----[SHA256]-----+
Generating public/private ed25519 key pair.
Your identification has been saved in /data/data/com.termux/files/usr/etc/ssh/ssh_host_ed25519_key
Your public key has been saved in /data/data/com.termux/files/usr/etc/ssh/ssh_host_ed25519_key.pub
The key fingerprint is:
SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX u0_a224@localhost
The key's randomart image is:
+--[ED25519 256]--+
|XXXXXXXXXXXXXXXXX|
|XXXXXXXXXXXXXXXXX|
|XXXXXXXXXXXXXXXXX|
|XXXXXXXXXXXXXXXXX|
|XXXXXXXXXXXXXXXXX|
|XXXXXXXXXXXXXXXXX|
|XXXXXXXXXXXXXXXXX|
|XXXXXXXXXXXXXXXXX|
|XXXXXXXXXXXXXXXXX|
+----[SHA256]-----+

When uploading com.termux/ from FileZilla the terminal exitted at some point so uploads started failing due to disconnected server, so I executed back in new Termux console:

sshd
CANNOT LINK EXECUTABLE "sshd": file offset for the library "libcrypto.so.3" >= file size: 0 >= 0

So let us restore files without network:

du -sh
4.0G    .
du -sh *
1.2G    home
2.8G    usr

https://wiki.termux.com/wiki/Backing_up_Termux:

time tar -zcf termux-backup.tar.gz home/ usr/
real    2m15.626s
user    2m5.849s
sys 0m10.754s
progress -m
ls -lh termux-backup.tar.gz
-rw-rw-r-- 1 CENSORED CENSORED 1.4G Aug 18 17:20 termux-backup.tar.gz
adb root
adbd cannot run as root in production builds
adb push termux-backup.tar.gz /sdcard/
termux-backup.tar.gz: 1 file pushed, 0 skipped. 29.9 MB/s (1402500629 bytes in 44.703s)
termux-setup-storage

is necessary as Files does not give access to Termux storage and adb push cannot push to Termux folder (cannot adb root even after checking Developer options)

tar -zxf /sdcard/termux-backup.tar.gz -C /data/data/com.termux/files --recursive-unlink --preserve-permissions

After exit:

:/data/data/com.termux/files/home $ cd
:/data/data/com.termux/files/home $ ls
sh: ls: can't execute: Permission denied

I guess it is because I archived on Linux Mint 22 Cinnamon and not Termux, probably due to FileZilla.

So this time let us proceed folder by folder manually.

Maybe issues with matrix-commander (with messages showing on other devices as Unable to decrypt message), see Benjamin-Loison/matrix-commander/issues/5.

Should encrypt to avoid other apps having access to /sdcard/ to access the backup. See https://wiki.termux.com/wiki/Backing_up_Termux.

Alternatively could use SSHFS.

Benjamin-Loison commented 2 months ago

Concerning Phone:

image

image

image

image

Both histories go to March 9, 2023.

Taking a screenshot with Capture more goes to January 2, 2024.

With 4 other Capture more screenshots I capture everything.

Benjamin-Loison commented 2 months ago

Concerning Signal:

image

image

Related to Benjamin-Loison/Signal-Android/issues/31.

So see Files.

Benjamin-Loison commented 2 months ago

If dd, SeedVault and my adb pull fails, I am fine loosing my data. If dd and SeedVault fail, I am fine loosing my Fennec history and WhatsApp chats.

Space needed: 256 GB for dd, used phone space (currently about 154 GB) * 2 for adb pull and SeedVault. /sdcard/ is about 99 GB according to du -sh.

Currently I have 431 GB free according to df -h, so taking into account dd, I have 175 GB free.

By compressing maybe can meet my goals, however maybe compressing requires both uncompressed source space and compressed target space.

time adb pull /sdcard/
/sdcard/: 6542 files pulled, 0 skipped. 34.4 MB/s (106358542072 bytes in 2951.298s)

real    49m12.010s
user    0m14.683s
sys 6m57.479s
du -sh sdcard
100G    sdcard
Benjamin-Loison commented 2 months ago

Can use scrcpy during the backup to avoid accidentally break connection by (indirectly) move the cable between the phone and computer.

Well in recovery it is quite pointless anyway:

scrcpy
scrcpy 2.6.1 <https://github.com/Genymobile/scrcpy>
ERROR: Device could not be connected (state=recovery)
ERROR: Server connection failed
Benjamin-Loison commented 2 months ago

image

image

At least took 41 minutes and 47.7 GB.

Benjamin-Loison commented 2 months ago
adb pull /sdcard/.SeedVaultAndroidBackup/
/sdcard/.SeedVaultAndroidBackup/: 5584... MB/s (54937670662 bytes in 1505.211s)
du -sh .SeedVaultAndroidBackup/
52G .SeedVaultAndroidBackup/
Benjamin-Loison commented 2 months ago

On Xiaomi Mi A3:

image

image

image

image

image

image

image

image

image

image

Benjamin-Loison commented 2 months ago

Switching from iOS or Android is easier than you think

  • Switch from iOS or Android in no time
  • Securely transfer all your data
  • All of your favorite Google Apps will be right there with you
  • Fairphones work with your devices: PCs, Macbooks, headphones, even iPads

Learn more

Source: https://shop.fairphone.com/fairphone-5#section3

https://shop.fairphone.com/getting-started#Transfer-your-data-easily

https://support.fairphone.com/hc/en-us/articles/10464413605137-Switch-to-your-new-Fairphone

Benjamin-Loison commented 2 months ago

Related to Benjamin_Loison/AuroraStore/issues/24 and Benjamin_Loison/fdroidclient/issues/13.

Benjamin-Loison commented 2 months ago

Should investigate Settings > Developer options > Desktop backup password (Desktop full backups aren't currently protected) on Xiaomi Mi A3 for instance.

https://technastic.com/back-up-android-apps-data-via-adb/ so seems related to adb backup and adb restore.

See Benjamin_Loison/seedvault/issues/18.

Benjamin-Loison commented 2 months ago

LineageOS does not keep the whole history of binary releases, hence have to pay attention. Taking whole sda seems dangerous even if I saw that updating may solve what looks like a firmware issue.

Only saving user-data seems pretty nice as saving the OS does not seem useful and does not lead to firmware issue.

The real question for both bit by bit save is does it restore well on another same phone model instance? I am fine with installing LineageOS manually on the phone to restore data on. However, have to make sure that do not break something by loosing IMEI, encryption keys or similar due to this specific same phone model instance.

Should save 2 different ways preferably to make sure that one can break if I need to restore a backup.

Benjamin-Loison commented 1 month ago

Related to Benjamin_Loison/adb/issues/13#issuecomment-2207.

Benjamin-Loison commented 1 month ago

On my Fairphone 4 LineageOS Termux:

date && stat notes.txt
Tue Sep  3 00:35:22 CEST 2024
  File: notes.txt
  Size: 150         Blocks: 8          IO Block: 4096   regular file
Device: 0,144   Inode: 50876       Links: 1
Access: (0660/-rw-rw----)  Uid: (    0/    root)   Gid: ( 9997/everybody)
Access: 2024-08-27 23:58:21.711123000 +0200
Modify: 2023-09-13 21:11:56.652000000 +0200
Change: 2024-08-27 23:58:21.711123107 +0200
 Birth: -

On my Linux Mint 22 Cinnamon Framework 13:

date && adb pull /sdcard/Documents/administrative/notes.txt && stat notes.txt
Tue Sep  3 12:37:03 AM CEST 2024
/sdcard/Documents/administrative.... 0.0 MB/s (150 bytes in 0.005s)
  File: notes.txt
  Size: 150         Blocks: 24         IO Block: 4096   regular file
Device: 0,70    Inode: 91504777    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/benjamin)   Gid: ( 1000/benjamin)
Access: 2024-09-03 00:37:03.697797589 +0200
Modify: 2024-09-03 00:37:03.702797579 +0200
Change: 2024-09-03 00:37:03.702797579 +0200
 Birth: -
date && adb pull -a /sdcard/Documents/administrative/notes.txt && stat notes.txt
Tue Sep  3 12:39:14 AM CEST 2024
/sdcard/Documents/administrative.... 0.0 MB/s (150 bytes in 0.009s)
  File: notes.txt
  Size: 150         Blocks: 24         IO Block: 4096   regular file
Device: 0,70    Inode: 91503644    Links: 1
Access: (0660/-rw-rw----)  Uid: ( 1000/benjamin)   Gid: ( 1000/benjamin)
Access: 2023-09-13 21:11:56.000000000 +0200
Modify: 2023-09-13 21:11:56.000000000 +0200
Change: 2024-09-03 00:39:14.217526582 +0200
 Birth: -

Source: https://adbshell.com/commands/adb-pull

So Modify is correctly kept.

Benjamin-Loison commented 1 month ago

Note that SeedVault backup after backing up Termux is useless as files in /sdcard/ are not backed up by SeedVault.

Benjamin-Loison commented 1 month ago
fp4ssht tar -zcf /sdcard/termux-backup.tar.gz -C /data/data/com.termux/files ./home ./usr
tar: ./home/bens_folder/termux/temperature.txt: file changed as we read it
tar: ./home/.gnupg/S.keyboxd: socket ignored
tar: ./home/.gnupg/S.gpg-agent: socket ignored
tar: ./home/.gnupg/S.gpg-agent.extra: socket ignored
tar: ./home/.gnupg/S.gpg-agent.browser: socket ignored
tar: ./home/.gnupg/S.gpg-agent.ssh: socket ignored
tar: ./usr/var/run/cron.reboot: Cannot open: Permission denied
tar: Exiting with failure status due to previous errors
Connection to fairphone-4-5g-1 closed.
echo $?
2
time tar -tzf termux-backup.tar.gz > /dev/null; echo $?; matrix-commander -m 'Verification finished'
0

Source: the Stack Overflow answer 2001750

man tar
...
       -t, --list
              List the contents of an archive.  Arguments are optional.   When
              given, they specify the names of the members to list.
...
       -z, --gzip, --gunzip, --ungzip
              Filter the archive through gzip(1).
...
       -f, --file=ARCHIVE
              Use  archive  file  or  device  ARCHIVE.   If this option is not
              given, tar will first examine the environment  variable  `TAPE'.
              If  it is set, its value will be used as the archive name.  Oth‐
              erwise, tar will assume the compiled-in  default.   The  default
              value  can be inspected either using the --show-defaults option,
              or at the end of the tar --help output.

              An archive name that has a colon in it specifies a file  or  de‐
              vice on a remote machine.  The part before the colon is taken as
              the machine name or IP address, and the part  after  it  as  the
              file or device pathname, e.g.:

              --file=remotehost:/dev/sr0

              An  optional username can be prefixed to the hostname, placing a
              @ sign between them.

              By default, the remote host is accessed via the rsh(1)  command.
              Nowadays  it  is common to use ssh(1) instead.  You can do so by
              giving the following command line option:

              --rsh-command=/usr/bin/ssh

              The remote machine should have the rmt(8) command installed.  If
              its  pathname  does  not match tar's default, you can inform tar
              about the correct pathname using the --rmt-command option.
...

What does it look like if do not redirect to /dev/null?

tar -tzf termux-backup.tar.gz | head
./home/
./home/.termux/
./home/.termux/termux.properties
./home/.termux/boot/
./home/.termux/boot/start.sh
./home/.termux/actual_start.sh
./home/.bash_history
./home/.ssh/
./home/.ssh/authorized_keys
./home/.ssh/known_hosts
Benjamin-Loison commented 1 month ago
adb pull -a /sdcard/; echo $?; time matrix-commander -m 'Pull finished!'
/sdcard/: 11402 files pulled, 0 skipped. 106.8 MB/s (117315124533 bytes in 1047.905s)
0
du -sh sdcard/
110G    sdcard/
du -sh sdcard/.SeedVaultAndroidBackup/
45G sdcard/.SeedVaultAndroidBackup/
adb shell du -sh /sdcard/.SeedVaultAndroidBackup/
45G /sdcard/.SeedVaultAndroidBackup/
ls -lh sdcard/termux-backup.tar.gz 
-rw-rw---- 1 benjamin benjamin 23G Sep  5 18:54 sdcard/termux-backup.tar.gz
adb shell ls -lh /sdcard/termux-backup.tar.gz 
-rw-rw---- 1 root everybody 22G 2024-09-05 18:54 /sdcard/termux-backup.tar.gz
Benjamin-Loison commented 1 month ago
du -sh .SeedVaultAndroidBackup/*
2.4G    .SeedVaultAndroidBackup/1725551528353
43G .SeedVaultAndroidBackup/82e49ac12b5b78d3.sv
Benjamin-Loison commented 1 month ago
adb push .SeedVaultAndroidBackup/ /sdcard/; echo $?; matrix-commander -m 'Push finished!'
.SeedVaultAndroidBackup/: 5375 files p... MB/s (47748608343 bytes in 1867.742s)
0
Benjamin-Loison commented 1 month ago
adb push termux-backup.tar.gz /sdcard/; echo $?; matrix-commander -m 'Push finished!'
termux-backup.tar.gz: 1 file pushed, 0 skipped. 23.6 MB/s (23803064345 bytes in 963.603s)
0

Before restoring facing:

ping 8.8.8.8
socket: Connection refused

https://docs.github.com/en/rest/actions/artifacts?apiVersion=2022-11-28

curl -s https://api.github.com/repos/termux/termux-app/actions/artifacts | jq '.artifacts[] | select((.name | test("termux\\-app_v0\\.118\\.0\\+[0-9a-f]{7}\\-apt\\-android\\-7\\-github\\-debug_arm64\\-v8a")) and (.workflow_run.head_branch == "master"))'
{
  "id": 1860474698,
  "node_id": "MDg6QXJ0aWZhY3QxODYwNDc0Njk4",
  "name": "termux-app_v0.118.0+c2d57f2-apt-android-7-github-debug_arm64-v8a",
  "size_in_bytes": 32952821,
  "url": "https://api.github.com/repos/termux/termux-app/actions/artifacts/1860474698",
  "archive_download_url": "https://api.github.com/repos/termux/termux-app/actions/artifacts/1860474698/zip",
  "expired": false,
  "created_at": "2024-08-27T15:51:01Z",
  "updated_at": "2024-08-27T15:51:01Z",
  "expires_at": "2024-11-25T15:47:57Z",
  "workflow_run": {
    "id": 10581503562,
    "repository_id": 44804216,
    "head_repository_id": 44804216,
    "head_branch": "master",
    "head_sha": "c2d57f2ed810b6fa854a6c9ab0ecee4aac38a0cc"
  }
}

https://github.com/termux/termux-app/commits/master/ does not seem to list builds of previous commits.

curl 'https://api.github.com/repos/termux/termux-app/actions/artifacts/1860474698/zip'
{
  "message": "You must have the actions scope to download artifacts.",
  "documentation_url": "https://docs.github.com/rest/actions/artifacts#download-an-artifact",
  "status": "403"
}

https://github.com/settings/personal-access-tokens/new Token name: Download GitHub artifacts Description: https://github.com/Benjamin-Loison/android/issues/46#issuecomment-2332912554

No matter permissions of Fine-grained tokens and Tokens (classic) and using Bearer or token I get either:

While an URL like https://github.com/termux/termux-app/actions/runs/10581503562/artifacts/1860474698 works fine only with Firefox and if we are connected.

wget https://github.com/termux/termux-app/actions/runs/10581503562/artifacts/1860474698 --header 'Cookie: user_session=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'

works fine.

adb install -r termux-app_v0.118.0+c2d57f2-apt-android-7-github-debug_arm64-v8a.apk
Performing Streamed Install
Success

and

adb install termux-app_v0.118.0+c2d57f2-apt-android-7-github-debug_arm64-v8a.apk
Performing Streamed Install
Success

do not help.

adb uninstall com.termux
Success
adb install termux-app_v0.118.0+c2d57f2-apt-android-7-github-debug_arm64-v8a.apk
Performing Streamed Install
Success

still does not solve the issue.

wget https://f-droid.org/repo/com.termux_1000.apk
Output: ``` --2024-09-06 02:54:29-- https://f-droid.org/repo/com.termux_1000.apk Resolving f-droid.org (f-droid.org)... 2a01:4f9:3b:546d::2, 2a00:c6c0:0:155:1::1, 37.218.243.72, ... Connecting to f-droid.org (f-droid.org)|2a01:4f9:3b:546d::2|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 106007555 (101M) [application/vnd.android.package-archive] Saving to: ‘com.termux_1000.apk’ com.termux_1000.apk 100%[===============================================================>] 101.10M 4.78MB/s in 34s 2024-09-06 02:55:03 (2.99 MB/s) - ‘com.termux_1000.apk’ saved [106007555/106007555] ```
adb uninstall com.termux
Success
adb install com.termux_1000.apk
Performing Streamed Install
adb: failed to install com.termux_1000.apk: Failure [INSTALL_FAILED_SHARED_USER_INCOMPATIBLE: Reconciliation failed...: Reconcile failed: Package com.termux has no signatures that match those in shared user com.termux; ignoring!]
adb uninstall com.termux.api
Success
adb uninstall com.termux.boot
Success
adb install termux-app_v0.118.0+c2d57f2-apt-android-7-github-debug_arm64-v8a.apk
Performing Streamed Install

Then ping works fine.

time tar -zxf /sdcard/termux-backup.tar.gz -C /data/data/com.termux/files --recursive-unlink --preserve-permissions; echo $?; matrix-commander -m 'Untar finished!'
real    6m1.573s
user    5m0.047s
sys     1m31.721s
0

How to monitor progress, as there is no output, progress requires installation and it may conflict with on-going restoration. du -sh .. is an interesting start.

Add-ons must be installed from the same source as the application so that the same User ID is used.

Source: Wikipedia: Termux#Add-ons (1246508231)

why the source matters? Can't just name the user user or the purpose is to match system one? Related to Benjamin_Loison/cron/issues/17.

Benjamin-Loison commented 1 month ago

On both my phone and a Xiaomi Mi A3 still have Verified on both sides even after sending to each other a message and on Xiaomi side killing and opening again the app.

Benjamin-Loison commented 1 month ago

Being able to export and re-import app permissions would be nice, even if requires using adb manually.

Related to Benjamin_Loison/seedvault/issues/23.