Rsync Lxc to CT
9/8/25Περίπου 2 λεπτά
Αυτός ο οδηγός περιλαμβάνει όλα τα απαραίτητα, από την εγκατάσταση του SSH server μέχρι την εκτέλεση του τελικού script, διασφαλίζοντας ότι όλα θα λειτουργήσουν άψογα από την αρχή.
Συνοπτικός Οδηγός Συγχρονισμού Αρχείων LXC -> CT-1 (Rsync)
Σκοπός: Συγχρονισμός φακέλων από το lxc (Host-1) στο CT-1 (Host-2) χωρίς κωδικό πρόσβασης.
Προαπαιτούμενα (Πρέπει να γίνουν στον CT-1):
Εγκατάσταση SSH Server:
- Εκτέλεσε:
sudo apt update && sudo apt install openssh-server
- Εκτέλεσε:
Ρύθμιση Firewall (UFW):
- Επίτρεψε την κίνηση στη θύρα 22 (SSH):
sudo ufw allow ssh - Ενεργοποίησε το firewall:
sudo ufw enable
- Επίτρεψε την κίνηση στη θύρα 22 (SSH):
Δικαιώματα Χρήστη:
- Πρόσθεσε τον χρήστη σου (
digilady) στην ομάδαwww-data:sudo usermod -a -G www-data digilady - Δώσε στον χρήστη σου πλήρη δικαιώματα στους καταλόγους προορισμού:
sudo chown -R digilady:www-data /var/www/htmlsudo chown -R digilady:www-data /var/www/lxc_backups - Δώσε δικαιώματα εγγραφής στην ομάδα
www-data:sudo chmod -R g+rw /var/www/htmlsudo chmod -R g+rw /var/www/lxc_backups
- Πρόσθεσε τον χρήστη σου (
Βήμα 1: Δημιουργία και Αντιγραφή SSH Κλειδιού
- Στο lxc (Host-1): Δημιούργησε το SSH key χωρίς passphrase:
ssh-keygen -t rsa -b 4096 - Στο lxc (Host-1): Αντέγραψε το δημόσιο κλειδί στον CT-1. Θα σου ζητηθεί ο κωδικός πρόσβασης για μία και μοναδική φορά:
ssh-copy-id -i /root/.ssh/id_rsa.pub digilady@192.168.1.146
Βήμα 2: Δημιουργία του Script Rsync
- Στο lxc (Host-1): Δημιούργησε ένα αρχείο (π.χ.,
sync_website.sh) με την εντολή:nano sync_website.sh - Περιεχόμενο Script: Αντέγραψε τον παρακάτω κώδικα και αποθήκευσέ τον.
#!/bin/bash
# Μεταβλητές
RSYNC_USER="digilady"
RSYNC_HOST="192.168.1.146"
DESTINATION_PATH="/var/www/lxc_backups"
# Κατάλογοι για συγχρονισμό
SOURCE_PATHS=(
"/var/www/html/"
"/var/www/my-vuepress-project/docs/"
"/var/www/my-vuepress-project/.vuepress/dist/"
)
# Logging
LOG_FILE="/var/log/sync_website.log"
echo "Starting website sync at $(date)" >> "$LOG_FILE"
# Εκτέλεση rsync
for path in "${SOURCE_PATHS[@]}"; do
echo "Syncing $path..." >> "$LOG_FILE"
rsync -avz --delete --chown=$RSYNC_USER:$RSYNC_USER -e "ssh" "$path" "$RSYNC_USER@$RSYNC_HOST:$DESTINATION_PATH/" >> "$LOG_FILE" 2>&1
done
echo "Sync finished at $(date)" >> "$LOG_FILE"
echo "-------------------------------------" >> "$LOG_FILE"
Βήμα 3: Εκτέλεση του Script
- Στο lxc (Host-1): Δώσε δικαιώματα εκτέλεσης στο script:
chmod +x sync_website.sh - Εκτέλεση:
./sync_website.sh