Android 相册备份

2023年10月25日 · 551 字 · 2 分钟

rss

最近找了一些 Android 端的开源软件,尝试同步照片到自建的图片服务器,效果都不理想。 最后还是采用了一个很笨,但是很方便的方法。使用 ”rsync“ 命令来备份照片。

# 网络环境,三台设备已用 wireguard 互联,内网 ip 固定。
                            ┌──────────────────┐
                            │ pi(debain)       │
                            │                  │
 ┌─────────────┐     ┌──────► 10.10.0.1        │
 │ phone       │     │      │                  │
 │             │     │      │                  │
 │ 10.10.0.3   ├─────┤      └──────────────────┘
 │             │     │
 │             │     │
 └─────────────┘     │
                     │
                     │
                     │      ┌──────────────────┐
                     │      │ pc(ubuntu)       │
                     │      │                  │
                     └──────► 10.10.0.4        │
                            │                  │
                            │                  │
                            └──────────────────┘

目标是将手机上的照片传输到 pi 和 pc 上,最最最简单的方法是 USB 数据线复制粘贴,但是这样非常不方便。三台机器都是 linux* 系统,用 rsync 命令更简单,更方便。

手机端使用的工具:

  • termux:执行 shell 脚本
  • termux:widget:从桌面 icon 一点唤起 termux,执行相应脚本

同步脚本如下:

#!/bin/sh exec "$@"
cd ~/storage/shared
pwd

for dst in "ban@10.10.0.4:/home/ban/data/Ban/Pictures/" "root@10.10.0.1:/root/data/Pictures"
do
    echo ""
    echo ""
    echo "===================="
    echo "rsync to pc ${dst}"
    echo "===================="

    for dst_dir in "Pictures" "DCIM"
    do
        cd $dst_dir
        rm .* -rfv
        for f in *; do
            if [ -d "$f" ]; then
                rm $f/.* -rfv
                if [ "$(ls -A $f)" ]; then
                    mv -v $f/* .
                fi
                rm $f -rfv
            fi
        done
        cd ../
        rsync -av --progress $dst_dir/* ${dst}
    done
    sleep 5

done 

echo ""
echo ""

read -p "Press enter to continue"

将上述脚本置于 /data/data/com.termux/files/home/.shortcuts 目录下

桌面新建 termux widget, 选择该脚本。

最用实现的效果

每次点击桌面上的 icon,照片自动增量备份到 pc 和 pi 设备上。