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 root@10.11.99.1

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!

Odkazy #