Hallo Zusammen,
wir haben an einer Schule extrem viele Notebooks, die wir „irgendwie“ gerne über WLAN-Syncen wollen. Eine Variante dazu, die ich heute „zusammengebastelt“ habe sieht etwa so aus:
- Samba-Freigabe meines Images
root@server:~# cat /etc/samba/smb.conf.admin
# …
[mate-20-image]
path = /srv/linbo/images/mate-20
public = yes
writable = no
comment = freigabe fuer onlinesync
printable = no
guest ok = yes
root@server:~#
-
im Linuxclient wird screen + rtorrent benötigt:
apt install rtorrent screen -
folgendes Skript starte ich mittels Crontab beim Start des Gerätes
linuxadmin@master-mate:/mnt/cache$ cat /etc/linuxmuster-linuxclient7/offlinesync.sh
#!/bin/bash
#1. Mount /cache + Mount samba-share
sudo mount //server/mate-20-image /mnt/mate-20-image -o guest
sudo mount /dev/sda2 /mnt/cache
#2 start torrent
screen -S torrent -d -m bash -c 'rtorrent'
~
~
- unter /root/.rtorrent.rc
root@master-mate:~# cat .rtorrent.rc
#############################################################################
# This is an (old) example resource file for rTorrent.
# Copy to ~/.rtorrent.rc and enable/modify the options as needed.
# Remember to uncomment the options you wish to enable.
#
# See 'rtorrent.rc-example' for a newer, basic configuration.
#
# Sample: https://github.com/rakshasa/rtorrent/wiki/CONFIG-Template
# Complete: https://rtorrent-docs.readthedocs.io/en/latest/cmd-ref.html
# Useful: https://rtorrent-docs.readthedocs.io/en/latest/use-cases.html
# Manual: https://rtorrent-docs.readthedocs.io/en/latest/
# Convert: https://github.com/rakshasa/rtorrent/wiki/rTorrent-0.9-Comprehensive-Command-list-(WIP)
# Handbook: https://media.readthedocs.org/pdf/rtorrent-docs/latest/rtorrent-docs.pdf
# File: https://github.com/rakshasa/rtorrent/blob/master/doc/rtorrent.rc
#############################################################################
# Maximum and minimum number of peers to connect to per torrent.
#
#throttle.min_peers.normal.set = 40
#throttle.max_peers.normal.set = 100
# Same as above but for seeding completed torrents.
# "-1" = same as downloading.
#
#throttle.min_peers.seed.set = 10
#throttle.max_peers.seed.set = 50
# Maximum number of simultaneous uploads per torrent.
#
#throttle.max_uploads.set = 15
# Global upload and download rate in KiB.
# "0" for unlimited.
#
#throttle.global_down.max_rate.set_kb = 0
#throttle.global_up.max_rate.set_kb = 0
# Default directory to save the downloaded torrents.
#
**directory.default.set = /mnt/cache**
# Default session directory. Make sure you don't run multiple instance
# of rTorrent using the same session directory. Perhaps using a
# relative path?
#
#session.path.set = ./session
# Watch a directory for new torrents, and stop those that have been
# deleted.
#
schedule2 = watch_directory,5,5,load.start=/mnt/mate-20-image/*.torrent
# Close torrents when disk-space is low.
#
#schedule2 = low_diskspace,5,60,close_low_diskspace=100M
# The IP address reported to the tracker.
#
#network.local_address.set = 127.0.0.1
#network.local_address.set = rakshasa.no
# The IP address the listening socket and outgoing connections is
# bound to.
#
#network.bind_address.set = 127.0.0.1
#network.bind_address.set = rakshasa.no
# Port range to use for listening.
#
#network.port_range.set = 6890-6999
# Start opening ports at a random position within the port range.
#
#network.port_random.set = no
# Check hash for finished torrents. Might be useful until the bug is
# fixed that causes lack of disk-space not to be properly reported.
#
#pieces.hash.on_completion.set = no
# Set whether the client should try to connect to UDP trackers.
#
#trackers.use_udp.set = yes
# Alternative calls to bind and IP that should handle dynamic IP's.
#
#schedule2 = ip_tick,0,1800,ip=rakshasa
#schedule2 = bind_tick,0,1800,bind=rakshasa
# Encryption options, set to none (default) or any combination of the following:
# allow_incoming, try_outgoing, require, require_RC4, enable_retry, prefer_plaintext
#
# The example value allows incoming encrypted connections, starts unencrypted
# outgoing connections but retries with encryption if they fail, preferring
# plain-text to RC4 encryption after the encrypted handshake.
#
# protocol.encryption.set = allow_incoming,enable_retry,prefer_plaintext
# Enable DHT support for trackerless torrents or when all trackers are down.
# May be set to "disable" (completely disable DHT), "off" (do not start DHT),
# "auto" (start and stop DHT as needed), or "on" (start DHT immediately).
# The default is "off". For DHT to work, a session directory must be defined.
#
# dht.mode.set = auto
# UDP port to use for DHT.
#
#dht.port.set = 6881
# Enable peer exchange (for torrents not marked private).
#
#protocol.pex.set = yes
# Set download list layout style ("full", "compact").
#
#ui.torrent_list.layout.set = "full"
# Run rTorrent as a daemon, controlled via XMLRPC.
#
#system.daemon.set = false
# SCGI Connectivity (for alternative rtorrent interfaces, XMLRPC)
# Use a IP socket with scgi_port, or a Unix socket with scgi_local.
# schedule can be used to set permissions on the unix socket.
#
#network.scgi.open_port = "127.0.0.1:5000"
#network.scgi.open_local = (cat,(session.path),/rpc.sock)
#schedule2 = socket_chmod, 0, 0, "execute.nothrow=chmod,770,(cat,(session.path),/rpc.sock)"
root@master-mate:~#
jetzt sollten folgende Dinge passieren:
- beim starten des Geräts werden /cache und samba → image gemountet.
- wenn dort eine neue .torrent-datei vorhanden ist, wird das .qcow2 in /cache geladen
- anschließend kann man ein Gerät mit neuem Abbild syncen, obwohl es nicht mit Kabelnetzwerk verbunden ist
Was ich nicht so gut finde (aber naja, eigentlich wollte ich heute Brücktage machen):
- das ganze läuft als root, besser wäre wenn man für diese funktion einen Nutzer anlegt
- unter NVME lässt sich das Medium vermutlich nicht mounten. (dirty workaround: oben einfach gleiches aufführen)
Findet das jemand besonders doof das so zu machen? Gibt es Einwände/Verbesserungsvorschläge?