Automatická záloha Remarkable2 na Macu #
Tento skript zálohuje dáta a konfiguráciu z vášho tabletu Remarkable2 do repozitára vždy, keď je pripojený cez USB, commitne zmeny a pushne na origin.
Inštalácia #
Vytvorte git repozitár s originom a s týmto skriptom:
#!/bin/bash
BACKUP_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
LOG_FILE="$BACKUP_DIR/backup.log"
REMARKABLE_IP="10.11.99.1"
REMARKABLE_USER="root"
REMARKABLE_DATA="/home/root/.local/share/remarkable/xochitl/"
REMARKABLE_CONFIG="/home/root/.config/remarkable/xochitl.conf"
log() {
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE"
echo "$1"
}
mkdir -p "$BACKUP_DIR/data"
mkdir -p "$(dirname "$LOG_FILE")"
if ! ping -c 1 -W 2 "$REMARKABLE_IP" >/dev/null 2>&1; then
log "reMarkable not accessible at $REMARKABLE_IP - ensure USB web interface is enabled"
exit 1
fi
log "Starting backup to $BACKUP_DIR"
cd "$BACKUP_DIR"
log "Backing up xochitl data..."
scp -r "$REMARKABLE_USER@$REMARKABLE_IP:$REMARKABLE_DATA"* "$BACKUP_DIR/data/" >> "$LOG_FILE" 2>&1
log "Backing up xochitl.conf..."
scp "$REMARKABLE_USER@$REMARKABLE_IP:$REMARKABLE_CONFIG" "$BACKUP_DIR/" >> "$LOG_FILE" 2>&1
CHANGES=$(git status --porcelain | wc -l)
if [ $CHANGES -gt 0 ]; then
git add -A
git commit --no-gpg-sign -m 'update changes'
git push origin main
log "Backup committed to git - $CHANGES files changed"
log "Total backup size: $(du -h -d 0 "$BACKUP_DIR/data" | cut -f1)"
log "Total files: $(find "$BACKUP_DIR/data" -type f | wc -l)"
else
log "No changes detected since last backup"
fi
Commitnite všetko. Potom vytvorte launchd agenta:
vim ~/Library/LaunchAgents/com.user.remarkable.connect.plist
S týmto obsahom:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.user.remarkable.connect</string>
<key>ProgramArguments</key>
<array>
<string>/Users/YOUR_USERNAME/remarkable/backup.sh</string>
</array>
<key>LaunchEvents</key>
<dict>
<key>com.apple.iokit.matching</key>
<dict>
<key>com.apple.device-attach</key>
<dict>
<key>idVendor</key>
<integer>1203</integer>
<key>idProduct</key>
<integer>16400</integer>
<key>IOProviderClass</key>
<string>IOUSBDevice</string>
</dict>
</dict>
</dict>
<key>ThrottleInterval</key>
<integer>7200</integer>
</dict>
</plist>
Upravte agenta, minimálne zmeňte ProgramArguments na miesto, kde sa
nachádza repozitár zálohovacieho skriptu - použite absolútnu cestu.
Úprava cez sed:
sed -i '' 's#/Users/YOUR_USERNAME/remarkable/backup.sh#/this/repo/backup.sh#' \
~/Library/LaunchAgents/com.user.remarkable.connect.plist
Alebo to jednoducho urobte ručne:
- <string>/Users/YOUR_USERNAME/remarkable/backup.sh</string>
+ <string>/this/repo/backup.sh</string>
Poznámka: Môžete tiež upraviť
ThrottleInterval, ktorý je momentálne nastavený na dve hodiny (7200 sekúnd), aby zálohovanie neprebehlo príliš často, keď je zariadenie pripojené a nespí. Predvolená hodnota je 10 sekúnd, čo je pre môj vkus príliš časté.
Potom znovu načítajte agenta:
launchctl unload ~/Library/LaunchAgents/com.user.remarkable.connect.plist
launchctl load ~/Library/LaunchAgents/com.user.remarkable.connect.plist
Uistite sa, že máte ssh prístup k RM2:
ssh [email protected]
Zapojte RM2 a sledujte cat backup.log a git log.
Ladenie #
Ak sú v plist súbore problémy, môžno ich presnejšie identifikovať pomocou:
plutil -lint ~/Library/LaunchAgents/com.user.remarkable.connect.plist
Opravte a znovu načítajte plist agenta. Ak to stále nefunguje, skontrolujte systémový log:
log show --predicate 'subsystem contains "remarkable"' --last 5m
Čo vám môže pomôcť identifikovať chyby, ako napríklad nesprávna cesta k skriptu:
2025-02-23 11:13:22.942298+0100 0x2b86f63 Default 0x0 1 0 launchd: [gui/501/com.user.remarkable.connect [83113]:] Could not find and/or execute program specified by service: 2: No such file or directory: /this/path/does/not/exist/backup.sh
2025-02-23 11:13:22.942321+0100 0x2b86f63 Error 0x0 1 0 launchd: [gui/501/com.user.remarkable.connect [83113]:] Service could not initialize: access(/this/path/does/not/exist/backup.sh, X_OK) failed with errno 2 - No such file or directory, error 0x6f - Invalid or missing Program/ProgramArguments
Toto by malo byť dostatočne nápomocné.
Hľadanie idVendor a idProduct #
Na zistenie ID predajcu a produktu pripojeného zariadenia na macOS môžete použiť:
system_profiler SPUSBDataType
Výsledok vyzerá zhruba takto:
Product ID: 0x4010
Vendor ID: 0x04b3 (IBM Corporation)
Version: 5.04
Serial Number: 0
Speed: Up to 480 Mb/s
Manufacturer: reMarkable
Location ID: 0x01100000 / 1
Current Available (mA): 500
Current Required (mA): 2
Extra Operating Current (mA): 0
Potom preveďte hexadecimálne hodnoty z vášho výstupu na desatinné:
- Vendor ID: 0x04b3 (hex) = 1203 (desatinné)
- Product ID: 0x4010 (hex) = 16400 (desatinné)
Pre ID predajcu/produktu v plist súbore macOS očakáva desatinné hodnoty
namiesto hexadecimálnych. Vzali sme hex hodnoty z výstupu
system_profiler:
0x04b3 = (4 × 16²) + (11 × 16¹) + (3 × 16⁰) = 1203
0x4010 = (4 × 16³) + (0 × 16²) + (1 × 16¹) + (0 × 16⁰) = 16400
To vedie k hodnotám v agentovi com.user.remarkable.connect.plist:
<key>idVendor</key>
<integer>1203</integer>
<key>idProduct</key>
<integer>16400</integer>
Užívaj!