Skip to content

Restic & Rclone & Nextcloud

Linux
  • Ich hatte mich schon mal mit rclone beschäftigt -> https://forum.frank-mankel.org/topic/27/restic-ein-backupkonzept-automatisieren?_=1584115522317

    Was ist rclone?

    Rclone - rsync for cloud storage

    Nun mal rclone auf meinem Haupt-PC, Debian Buster, ausprobieren.

    Installation

    root@debian:~# apt install rclone
    Paketlisten werden gelesen... Fertig
    Abhängigkeitsbaum wird aufgebaut.       
    Statusinformationen werden eingelesen.... Fertig
    Die folgenden NEUEN Pakete werden installiert:
      rclone
    0 aktualisiert, 1 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
    Es müssen 6.248 kB an Archiven heruntergeladen werden.
    Nach dieser Operation werden 26,6 MB Plattenplatz zusätzlich benutzt.
    Holen:1 https://deb.debian.org/debian buster/main amd64 rclone amd64 1.45-3 [6.248 kB]
    Es wurden 6.203 kB in 8 s geholt (777 kB/s).
    Vormals nicht ausgewähltes Paket rclone wird gewählt.
    (Lese Datenbank ... 238249 Dateien und Verzeichnisse sind derzeit installiert.)
    Vorbereitung zum Entpacken von .../rclone_1.45-3_amd64.deb ...
    Entpacken von rclone (1.45-3) ...
    rclone (1.45-3) wird eingerichtet ...
    

    Konfiguration

    root@debian:~# rclone config
    2020/03/14 09:20:19 NOTICE: Config file "/root/.config/rclone/rclone.conf" not found - using defaults
    No remotes found - make a new one
    n) New remote
    s) Set configuration password
    q) Quit config
    n/s/q> n
    name> nextcloud
    Type of storage to configure.
    Enter a string value. Press Enter for the default ("").
    Choose a number from below, or type in your own value
     1 / A stackable unification remote, which can appear to merge the contents of several remotes
       \ "union"
     2 / Alias for a existing remote
       \ "alias"
     3 / Amazon Drive
       \ "amazon cloud drive"
     4 / Amazon S3 Compliant Storage Providers (AWS, Ceph, Dreamhost, IBM COS, Minio)
       \ "s3"
     5 / Backblaze B2
       \ "b2"
     6 / Box
       \ "box"
     7 / Cache a remote
       \ "cache"
     8 / Dropbox
       \ "dropbox"
     9 / Encrypt/Decrypt a remote
       \ "crypt"
    10 / FTP Connection
       \ "ftp"
    11 / Google Cloud Storage (this is not Google Drive)
       \ "google cloud storage"
    12 / Google Drive
       \ "drive"
    13 / Hubic
       \ "hubic"
    14 / JottaCloud
       \ "jottacloud"
    15 / Local Disk
       \ "local"
    16 / Microsoft Azure Blob Storage
       \ "azureblob"
    17 / Microsoft OneDrive
       \ "onedrive"
    18 / OpenDrive
       \ "opendrive"
    19 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
       \ "swift"
    20 / Pcloud
       \ "pcloud"
    21 / SSH/SFTP Connection
       \ "sftp"
    22 / Webdav
       \ "webdav"
    23 / Yandex Disk
       \ "yandex"
    24 / http Connection
       \ "http"
    Storage> 22
    ** See help for webdav backend at: https://rclone.org/webdav/ **
    
    URL of http host to connect to
    Enter a string value. Press Enter for the default ("").
    Choose a number from below, or type in your own value
     1 / Connect to example.com
       \ "https://example.com"
    url> https://nextcloud.example.de/remote.php/dav/files/User/
    Name of the Webdav site/service/software you are using
    Enter a string value. Press Enter for the default ("").
    Choose a number from below, or type in your own value
     1 / Nextcloud
       \ "nextcloud"
     2 / Owncloud
       \ "owncloud"
     3 / Sharepoint
       \ "sharepoint"
     4 / Other site/service or software
       \ "other"
    vendor> 1
    User name
    Enter a string value. Press Enter for the default ("").
    user> Frank
    Password.
    y) Yes type in my own password
    g) Generate random password
    n) No leave this optional password blank
    y/g/n> y
    Enter the password:
    password:
    Confirm the password:
    password:
    Bearer token instead of user/pass (eg a Macaroon)
    Enter a string value. Press Enter for the default ("").
    bearer_token> 
    Remote config
    --------------------
    [nextcloud]
    url = https://nextcloud.example.de/remote.php/dav/files/Frank/
    vendor = nextcloud
    user = Frank
    pass = *** ENCRYPTED ***
    --------------------
    y) Yes this is OK
    e) Edit this remote
    d) Delete this remote
    y/e/d> y
    Current remotes:
    
    Name                 Type
    ====                 ====
    nextcloud            webdav
    
    e) Edit existing remote
    n) New remote
    d) Delete remote
    r) Rename remote
    c) Copy remote
    s) Set configuration password
    q) Quit config
    e/n/d/r/c/s/q> q
    

    Das sollte für Euch als Nextcloud User keine besondere Herausforderung sein. Unter https://nextcloud.example.de/settings/user/security legt ihr, wie gewohnt, das Gerät fest was auf Eure Nextcloud Instanz zugreifen darf.

    Test

    rclone ls nextcloud:
    

    Ein erster Test gab mir den kompletten Inhalt der Nextcloud Installation aus. Hmm, nicht das was ich wollte. rclone soll nur auf ein bestimmtes Verzeichnis zugreifen dürfen. Also schnell einen Ordner in der Nextcloud angelegt.

    Kurz ändern.

    root@debian:~# rclone config
    Current remotes:
    
    Name                 Type
    ====                 ====
    nextcloud            webdav
    
    e) Edit existing remote
    n) New remote
    d) Delete remote
    r) Rename remote
    c) Copy remote
    s) Set configuration password
    q) Quit config
    e/n/d/r/c/s/q> e
    Choose a number from below, or type in an existing value
     1 > nextcloud
    remote> 1
    --------------------
    [nextcloud]
    type = webdav
    url = https://nextcloud.example.de/remote.php/dav/files/Frank/
    vendor = nextcloud
    user = Frank
    pass = *** ENCRYPTED ***
    --------------------
    Edit remote
    ** See help for webdav backend at: https://rclone.org/webdav/ **
    
    Value "url" = "https://nextcloud.example.de/remote.php/dav/files/Frank/"
    Edit? (y/n)>
    y) Yes
    n) No
    y/n> y
    URL of http host to connect to
    Enter a string value. Press Enter for the default ("").
    Choose a number from below, or type in your own value
     1 / Connect to example.com
       \ "https://example.com"
    url> https://nextcloud.example.de/remote.php/dav/files/Frank/rclone/                                          
    Value "vendor" = "nextcloud"
    Edit? (y/n)>
    y) Yes
    n) No
    y/n> n
    Value "user" = "Frank"
    Edit? (y/n)>
    y) Yes
    n) No
    y/n> n
    Value "pass" = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    Edit? (y/n)>
    y) Yes
    n) No
    y/n> n
    Value "bearer_token" = ""
    Edit? (y/n)>
    y) Yes
    n) No
    y/n> n
    --------------------
    [nextcloud]
    type = webdav
    url = https://nextcloud.example.de/remote.php/dav/files/Frank/rclone/
    vendor = nextcloud
    user = Frank
    pass = *** ENCRYPTED ***
    --------------------
    y) Yes this is OK
    e) Edit this remote
    d) Delete this remote
    y/e/d> y
    Remote config
    Current remotes:
    
    Name                 Type
    ====                 ====
    nextcloud            webdav
    
    e) Edit existing remote
    n) New remote
    d) Delete remote
    r) Rename remote
    c) Copy remote
    s) Set configuration password
    q) Quit config
    e/n/d/r/c/s/q> q
    

    Erneuter Test

    root@debian:~# rclone ls nextcloud:
    

    Jetzt zeigt er ein leeres Verzeichnis an. Kurz ein Dokument erstellt.

    root@debian:~# rclone ls nextcloud:
             4 Testing.md
    

    Passt. Die rclone Konfiguration ist abgeschlossen. Jetzt kann ich mit rclone auf meine Nextcloud Installation zugreifen. Und wofür das Ganze? Mit Restic, in Verbindung mit rclone, möchte ich eine Datensicherung einrichten die Daten verschlüsselt in meiner Nextcloud Instanz ablegt.

  • Gut, nun zum Restic Teil.

    In Debian Buster ist aktuell diese Version enthalten.

    restic/stable,now 0.9.4+ds-2+b1 amd64  [installiert]
      backup program with multiple revisions, encryption and more
    

    Installation

    apt install restic
    

    Version checken mit

    root@debian:~# restic version
    restic 0.9.4 compiled with go1.11.6 on linux/amd64
    

    INIT

    Um jetzt eine Datensicherung zu initialisieren, muss man folgendes eingeben.

    root@debian:~# restic -r rclone:nextcloud:HOME init
    enter password for new repository: 
    enter password again: 
    created restic repository 4bxxxxxx16 at rclone:nextcloud:HOME
    
    Please note that knowledge of your password is required to access
    the repository. Losing your password means that your data is
    irrecoverably lost.
    

    In diesem Beispiel erzeuge ich eine Datensicherung in der Nextcloud Instanz im Verzeichnis HOME.

    8b0322e0-0896-4167-8d25-6e341a61d461-image.png

    Man wird nach dem Passwort gefragt, alles so wie wir es kennen. Mehr zu Restic gibt es hier. Man könnte jetzt natürlich auch mehrere Datensicherungen dort ablegen, dazu müsste das HOME gegen was anderes ausgetauscht werden.

    Backup Plan

    Ich möchte die wichtigsten Daten aus meinem Homeverzeichnis sichern. Dazu müssen wir uns Gedanken machen, was wichtig ist.

    Ich habe da folgende Sachen mal ausgesucht

    • Scripte_NAS
    • .cinnamon
    • .config
    • .filezilla
    • .gnupg
    • .joplin
    • .mozilla
    • .ssh
    • .thunderbird
    • .vscode

    Nun erstellen wir eine INCLUDE Datei.

     nano includes.txt
    

    Die Dateien von oben rein und speichern.

    BACKUP

    Das sieht dann so aus.

    restic --password-file /root/passwd -r rclone:nextcloud:HOME backup --files-from /root/includes.txt
    

    In /root/passwd liegt das Passwort, wir wollen das Ganze ja bitte schön automatisieren.

    Der Rest sollte klar sein, ansonsten verweise ich auf die tolle Anleitung.

    Nun werden alle Dateien verschlüsselt in der Nextcloud Instanz abgelegt. So mit kann auch kein neugieriger Systemadministrator da was mit anfangen 😉

  • Hier mal eine Ausgabe vom ersten Durchgang

    root@frank-MS-7C37:~# restic --password-file /root/passwd -r rclone:Nextcloud:HOME_UBUNTU backup --files-from /root/includes.txt
    repository 99xxxxa0 opened successfully, password is correct
    created new cache in /root/.cache/restic
    rclone: 2020/05/08 17:47:57 ERROR : locks: error listing: directory not found
    rclone: 2020/05/08 17:47:58 ERROR : index: error listing: directory not found
    rclone: 2020/05/08 17:47:58 ERROR : snapshots: error listing: directory not found
    
    Files:        3503 new,     0 changed,     0 unmodified
    Dirs:            2 new,     0 changed,     0 unmodified
    Added to the repo: 16.872 GiB
    
    processed 3503 files, 21.134 GiB in 1:02:56
    snapshot fdxxxxec saved
    

    Der erste Durchgang hat also etwa eine Stunde benötigt. Durch die Deduplikation der Daten, ist der Vorgang beim zweiten Durchgang viel schneller weil nur neue oder geänderte Daten gesichert werden. Und außerdem sind alle Daten AES-256 verschlüsselt. Also perfekt zur Ablage in irgendeiner Cloud 😉

    root@frank-MS-7C37:~# restic --password-file /root/passwd -r rclone:Nextcloud:HOME_UBUNTU backup --files-from /root/includes.txt
    repository 99xxxxa0 opened successfully, password is correct
    
    Files:          57 new,    41 changed,  3449 unmodified
    Dirs:            0 new,     2 changed,     0 unmodified
    Added to the repo: 22.941 MiB
    
    processed 3547 files, 21.137 GiB in 0:13
    snapshot c6xxxxe4 saved
    

    Wie ihr seht, hat der zweite Durchgang nur ein paar neue und geänderte Daten gesichert. Der Rest ist ja schon vorhanden. Und das kann man dann auch problemlos täglich, wöchentlich oder was auch immer mal eben schnell durchführen.

    Eines meiner absoluten Lieblingstool 🙂

  • NodeBB - Upgrade v1.19.2

    NodeBB
    2
    0 Stimmen
    2 Beiträge
    148 Aufrufe
    FrankMF

    Es gab da noch ein lästiges Problem -> https://github.com/NodeBB/nodebb-plugin-emoji/issues/52

    npm install nodebb-plugin-emoji@3.5.13

    Die Version v3.5.13 behebt das Problem.

  • NodeBB - Update auf v1.18.6

    NodeBB
    1
    0 Stimmen
    1 Beiträge
    135 Aufrufe
    Niemand hat geantwortet
  • Mainline 5.13.x

    Images
    1
    0 Stimmen
    1 Beiträge
    191 Aufrufe
    Niemand hat geantwortet
  • NanoPi R4S - OpenWrt kompilieren

    Angeheftet NanoPi R4S
    2
    0 Stimmen
    2 Beiträge
    401 Aufrufe
    FrankMF

    Ja, ich kann bestätigen, es funktioniert und startet einwandfrei!

  • Rest-Server

    Verschoben Restic
    8
    0 Stimmen
    8 Beiträge
    559 Aufrufe
    FrankMF

    Dann mal eben ausprobiert. Auf meinem Server war die Version 0.9.7 selber, mit go, gebaut. Dann mache ich das auch mit der v0.10.0 so. Aber bevor ich anfange, wird die v0.9.7 gesichert.

    mv /usr/local/bin/rest-server /usr/local/bin/rest-server_0_9_7

    So erspare ich mir im Problemfall das selber bauen.

    Ok, dann die neue Version bauen.

    git clone https://github.com/restic/rest-server.git cd rest-server go run build.go

    Danach befindet sich im Verzeichnis die Binärdatei rest-server

    Die kopieren wir jetzt

    cp rest-server /usr/local/bin

    Danach kurzer Test

    # rest-server --version rest-server 0.10.0 (v0.10.0-6-g037fe06) compiled with go1.11.6 on linux/amd64

    Gut Version passt 🙂

    Dann ein Backup gestartet. Das sichert einen Teil meines Home-Verzeichnis

    Files: 153 new, 100 changed, 177857 unmodified Dirs: 0 new, 1 changed, 0 unmodified Added to the repo: 81.881 MiB processed 178110 files, 80.571 GiB in 0:28 snapshot 607e0027 saved Applying Policy: keep the last 3 snapshots, 3 monthly snapshots keep 5 snapshots: ID Time Host Tags Reasons Paths --------------------------------------------------------------------------------------- fa97890e 2020-07-25 21:02:05 frank-XXX monthly snapshot /home/frank 5b073bbb 2020-08-30 10:17:27 frank-XXX monthly snapshot /home/frank f7cf37ef 2020-09-06 15:13:03 frank-XXX last snapshot /home/frank 0157462c 2020-09-13 13:32:12 frank-XXX last snapshot /home/frank 607e0027 2020-09-14 08:09:34 frank-XXX last snapshot /home/frank monthly snapshot --------------------------------------------------------------------------------------- 5 snapshots remove 1 snapshots: ID Time Host Tags Paths --------------------------------------------------------------------- 3010b7cc 2020-09-06 11:39:27 frank-XXX /home/frank --------------------------------------------------------------------- 1 snapshots 1 snapshots have been removed, running prune counting files in repo building new index for repo [1:34] 100.00% 17351 / 17351 packs

    So weit funktioniert das genau wie vorher. Im Changelog stand ja was von Subfoldern. Das betrifft mich nicht, weil ich für jeden User genau ein Verzeichnis habe.

    So mit alles Gut 🙂 Dann warte ich mal morgen ab, ob die täglichen Backups der Server rund laufen.

  • ROCKPro64 - Kamils neuer 0.10.x Release

    ROCKPro64
    1
    0 Stimmen
    1 Beiträge
    231 Aufrufe
    Niemand hat geantwortet
  • Liste von Linuxbefehlen

    Angeheftet Linux
    3
    0 Stimmen
    3 Beiträge
    682 Aufrufe
    FrankMF
    systemd Anzeige der geladenen Dienste root@host:/etc/systemd/system# systemctl --type=service UNIT LOAD ACTIVE SUB DESCRIPTION atd.service loaded active running Deferred execution scheduler blk-availability.service loaded active exited Availability of block devices cloud-config.service loaded active exited Apply the settings specified in cloud-config cloud-final.service loaded active exited Execute cloud user/final scripts cloud-init-local.service loaded active exited Initial cloud-init job (pre-networking) cloud-init.service loaded active exited Initial cloud-init job (metadata service crawler) console-setup.service loaded active exited Set console font and keymap cron.service loaded active running Regular background program processing daemon crowdsec-firewall-bouncer.service loaded active running The firewall bouncer for CrowdSec crowdsec.service loaded active running Crowdsec agent dbus.service loaded active running D-Bus System Message Bus getty@tty1.service loaded active running Getty on tty1 ifupdown-pre.service loaded active exited Helper to synchronize boot up for ifupdown keyboard-setup.service loaded active exited Set the console keyboard layout kmod-static-nodes.service loaded active exited Create List of Static Device Nodes lvm2-monitor.service loaded active exited Monitoring of LVM2 mirrors, snapshots etc. using dmeventd or progress polling mariadb.service loaded active running MariaDB 10.11.3 database server networking.service loaded active exited Raise network interfaces nginx.service loaded active running A high performance web server and a reverse proxy server qemu-guest-agent.service loaded active running QEMU Guest Agent resolvconf.service loaded active exited Nameserver information manager semaphore.service loaded active running Ansible Semaphore serial-getty@ttyS0.service loaded active running Serial Getty on ttyS0 ssh.service loaded active running OpenBSD Secure Shell server systemd-binfmt.service loaded active exited Set Up Additional Binary Formats systemd-fsck@dev-disk-by\x2duuid-1E22\x2dDC00.service loaded active exited File System Check on /dev/disk/by-uuid/1E22-DC00 systemd-journal-flush.service loaded active exited Flush Journal to Persistent Storage systemd-journald.service loaded active running Journal Service systemd-logind.service loaded active running User Login Management systemd-modules-load.service loaded active exited Load Kernel Modules systemd-random-seed.service loaded active exited Load/Save Random Seed systemd-remount-fs.service loaded active exited Remount Root and Kernel File Systems systemd-sysctl.service loaded active exited Apply Kernel Variables systemd-sysusers.service loaded active exited Create System Users systemd-timesyncd.service loaded active running Network Time Synchronization systemd-tmpfiles-setup-dev.service loaded active exited Create Static Device Nodes in /dev systemd-tmpfiles-setup.service loaded active exited Create Volatile Files and Directories systemd-udev-trigger.service loaded active exited Coldplug All udev Devices systemd-udevd.service loaded active running Rule-based Manager for Device Events and Files systemd-update-utmp.service loaded active exited Record System Boot/Shutdown in UTMP systemd-user-sessions.service loaded active exited Permit User Sessions ufw.service loaded active exited Uncomplicated firewall user-runtime-dir@0.service loaded active exited User Runtime Directory /run/user/0 user@0.service loaded active running User Manager for UID 0 LOAD = Reflects whether the unit definition was properly loaded. ACTIVE = The high-level unit activation state, i.e. generalization of SUB. SUB = The low-level unit activation state, values depend on unit type. 44 loaded units listed. Pass --all to see loaded but inactive units, too. To show all installed unit files use 'systemctl list-unit-files'.
  • Veracrypt Volume einhängen

    Linux
    1
    0 Stimmen
    1 Beiträge
    841 Aufrufe
    Niemand hat geantwortet