Οδηγοί Πώς-Να

Μεταφορά Γιγαντιαίων Αρχείων μεταξύ Servers με rsync μέσω SSH: Οδηγός για Hosting και VPS

  • 12 λεπτά ανάγνωσης
  • Η Ομάδα της Hostragons
Μεταφορά Γιγαντιαίων Αρχείων μεταξύ Servers με rsync μέσω SSH: Οδηγός για Hosting και VPS

Η εντολή rsync μέσω SSH αποτελεί μία από τις πιο πρακτικές και αξιόπιστες λύσεις για γρήγορη, ασφαλή και ανθεκτική μεταφορά μεγάλων αρχείων μεταξύ δύο Linux servers. Ειδικά όταν χρειάζεται να μεταφέρουμε εκατοντάδες GB δεδομένων – ιστοσελίδες, αρχεία backup, media folders ή εφαρμογές – το rsync προσφέρει σημαντικό πλεονέκτημα ταχύτητας, καθώς μεταδίδει μόνο τα τμήματα που έχουν αλλάξει αντί να αντιγράφει ολόκληρο το αρχείο κάθε φορά. Η βασική αρχή λειτουργίας: τα αρχεία του source server συγχρονίζονται κρυπτογραφημένα προς τον destination server μέσω SSH tunnel, ενώ σε τυχόν διακοπή σύνδεσης η διαδικασία μπορεί να συνεχιστεί από το σημείο που σταμάτησε.

Σε μεταφορά server, αναβάθμιση hosting, αλλαγή datacenter ή backup, είναι κρίσιμο όχι μόνο η ταχύτητα αλλά και η ακεραιότητα των δεδομένων. Το να κατεβάσετε ένα τεράστιο αρχείο και να το ανεβάσετε ξανά, εκτός από χρονοβόρο, εγκυμονεί κινδύνους επανεκκίνησης σε περίπτωση αποτυχίας σύνδεσης. Το rsync διατηρεί timestamps, δικαιώματα, ιδιοκτησίες και δομή φακέλων, γι’ αυτό και αποτελεί καθημερινό εργαλείο για sysadmins, DevOps και hosting experts.

Στον οδηγό αυτό παρουσιάζουμε βήμα-βήμα τη διαδικασία rsync μέσω SSH για μεταφορά μεγάλων αρχείων μεταξύ δύο Linux servers, με παραδείγματα εντολών, tips για επιτάχυνση, ασφάλεια, σενάρια αποτυχίας, δοκιμαστική μεταφορά και σημεία που απαιτούν προσοχή πριν τη μετάβαση σε production. Πριν ξεκινήσετε, βεβαιωθείτε ότι τόσο ο source όσο και ο destination server διαθέτουν επαρκή χώρο, SSH πρόσβαση και σωστά user permissions. Για επιλογή υποδομής δείτε τις σελίδες Hostragons λύσεις διακομιστή VPS και Πακέτα Linux Hosting.

Τι είναι το rsync και γιατί προτιμάται για μεταφορά μεγάλων αρχείων;

Το rsync είναι ένα ισχυρό command-line εργαλείο για συγχρονισμό αρχείων και φακέλων τοπικά ή μεταξύ απομακρυσμένων servers. Το μεγαλύτερο πλεονέκτημα είναι ο αλγόριθμος “delta transfer”: αντί να μεταφέρει ολόκληρο το αρχείο, στέλνει μόνο τα τμήματα που έχουν αλλάξει. Έτσι, αν ένα backup 80 GB άλλαξε μόνο κατά 2 GB, μεταφέρονται μόνο αυτά τα blocks.

Το SSH προσθέτει κρυπτογράφηση, ώστε το περιεχόμενο των αρχείων να μην μεταδίδεται ως plain text στο δίκτυο. Αυτό είναι κρίσιμο για δεδομένα πελατών, παραγγελίες e-shop, media archives, backups βάσεων δεδομένων και proprietary εφαρμογές. Στον χώρο του hosting, η ασφάλεια δεν περιορίζεται μόνο στα SSL certificates – και το κανάλι μεταφοράς μεταξύ servers πρέπει να είναι ασφαλές. Όπως χρησιμοποιείτε Πιστοποιητικό SSL για την κίνηση της ιστοσελίδας, έτσι και το server-to-server file transfer πρέπει να γίνεται μέσω SSH.

Το rsync είναι πιο ευέλικτο από το FTP ή τα manual download-upload. Μπορεί να διατηρήσει δικαιώματα, να μεταφέρει symlinks, να διαγράψει αρχεία στον προορισμό που δεν υπάρχουν στο source, να περιορίσει το bandwidth και να κάνει δοκιμαστική μεταφορά. Αυτή η granular control είναι πολύτιμη σε μεταφορές μεγάλων αρχείων.

Πότε πρέπει να χρησιμοποιείτε rsync μέσω SSH;

Το rsync μέσω SSH είναι ιδανικό για μεγάλα, πολυάριθμα ή συχνά μεταβαλλόμενα αρχεία. Για μεμονωμένες εικόνες, το SFTP είναι αρκετό, αλλά για χιλιάδες αρχεία, διαφορετικά permissions και μεγάλα archives το rsync είναι πολύ πιο αξιόπιστο.

  • Μεταφέρετε ιστοσελίδα από παλιό server σε νέο VPS.
  • Συγχρονίζετε directories με χιλιάδες media αρχεία (πχ WordPress uploads).
  • Κάνετε backup σε άλλο server καθημερινά/εβδομαδιαία/μηνιαία.
  • Αλλάζετε datacenter ή hosting provider.
  • Συγχρονίζετε αρχεία εφαρμογής μεταξύ production και backup περιβάλλοντος.
  • Σχεδιάζετε μεταφορές μεγάλης διάρκειας με πιθανότητα διακοπής σύνδεσης.

Για παράδειγμα: η μεταφορά ενός media folder 250 GB μέσω desktop download/upload απαιτεί δύο ξεχωριστές μεταφορές, καθιστώντας το bandwidth bottleneck. Με rsync, η μεταφορά γίνεται server-to-server χωρίς ενδιάμεσο βήμα.

Απαραίτητα πριν ξεκινήσετε

Η γνώση της εντολής rsync δεν αρκεί – χρειάζεται έλεγχος των συνθηκών στον source και destination server, ώστε να μειώνονται οι κίνδυνοι απώλειας/ημιτελούς μεταφοράς. Ακολουθούν βασικοί έλεγχοι για production περιβάλλον:

1. Επιβεβαίωση SSH πρόσβασης

Ο source server πρέπει να μπορεί να συνδεθεί μέσω SSH στον destination. Δοκιμάστε: ssh user@destination-ip. Αν το SSH τρέχει σε custom port, χρησιμοποιήστε: ssh -p 2222 user@destination-ip. Αν η σύνδεση αποτύχει, το rsync δεν θα δουλέψει. Ελέγξτε firewall, Fail2ban, SSH port, user permissions, password/key authentication.

2. Έλεγχος εγκατάστασης rsync

Τα περισσότερα Linux distros έχουν ήδη εγκατεστημένο rsync, αλλά επιβεβαιώστε με rsync --version. Αν δεν υπάρχει, εγκαταστήστε με apt install rsync (Debian/Ubuntu) ή dnf/yum install rsync (CentOS, AlmaLinux, Rocky). Σε Hostragons VPS η εγκατάσταση διαρκεί λίγα δευτερόλεπτα.

3. Υπολογισμός χώρου δίσκου

Αν ο destination server δεν έχει επαρκή χώρο, η μεταφορά θα διακοπεί. Χρησιμοποιήστε du -sh /source/folder για το μέγεθος του source και df -h για το destination. Προτείνεται να αφήσετε extra χώρο για temporary files και logs – πχ για 500 GB μεταφορά, προβλέψτε τουλάχιστον 550-600 GB.

4. Προγραμματισμός κρίσιμων υπηρεσιών και μεταβαλλόμενων αρχείων

Σε live sites, αρχεία μπορεί να αλλάζουν κατά τη μεταφορά (uploads, cache, logs). Πρώτα μεταφέρετε το bulk, μετά βάλτε το site σε maintenance και ξανατρέξτε το rsync. Έτσι η downtime μειώνεται δραστικά. Για WordPress, δείτε Οδηγός μεταφοράς φιλοξενίας WordPress για extra οδηγίες.

Βασική εντολή rsync: Μεταφορά αρχείων ανάμεσα σε servers

Η πιο συχνή συνταγή: rsync -avz /source/folder/ user@destination-ip:/destination/folder/. Το -a ενεργοποιεί archive mode (permissions, timestamps, symlinks), το -v δίνει verbose output, το -z ενεργοποιεί compression. Προσοχή: το slash στο τέλος διαφέρει! /source/folder/ = περιεχόμενα του φακέλου, /source/folder = ο ίδιος ο φάκελος.

Σενάριο: Θέλετε να μεταφέρετε 180 GB web files από /var/www/site/public_html/ σε νέο server στο ίδιο path. Εντολή: rsync -avz /var/www/site/public_html/ root@203.0.113.20:/var/www/site/public_html/. Η μεταφορά γίνεται μέσω SSH.

Για μεγαλύτερη ασφάλεια, αντί για root, δημιουργήστε ειδικό χρήστη (πχ deploy) με write access στο destination folder. Σε production, περιορισμένοι users είναι προτιμότεροι από root.

Προτεινόμενες ασφαλείς και ανθεκτικές παραμέτροι rsync

Στις μεγάλες μεταφορές, μόνο η βασική εντολή δεν αρκεί. Για προστασία από διακοπές, partial files, λάθος διαγραφές ή αργά δίκτυα, προσθέστε επιπλέον παραμέτρους:

rsync -aHAXv --numeric-ids --partial --progress --append-verify -e ssh /source/folder/ user@destination-ip:/destination/folder/

-a: archive, -H: hard links, -A: ACL, -X: extended attributes, --numeric-ids: χρήσιμα αν διαφέρουν τα user names μεταξύ servers, --partial: κρατά τα ημιτελή αρχεία, --progress: δείχνει progress, --append-verify: επαληθεύει το appended κομμάτι σε επανεκκίνηση. Κάθε παράμετρος έχει στόχο – επιλέξτε ανάλογα με τις ανάγκες σας και πάντα κάντε δοκιμαστική μεταφορά.

rsync με custom SSH port

Αν το SSH τρέχει σε port εκτός του default 22, δηλώστε το στην εντολή. Παράδειγμα: rsync -avz -e ssh -p 2222 /source/folder/ user@destination-ip:/destination/folder/. Η σωστή σύνταξη είναι: rsync -avz -e 'ssh -p 2222' /source/folder/ user@destination-ip:/destination/folder/.

Σε τερματικό, προσέξτε τα quotes. Αν χρησιμοποιείτε SSH key, προσθέστε -i: rsync -avz -e 'ssh -p 2222 -i /root/.ssh/id_rsa' /source/folder/ user@destination-ip:/destination/folder/. Ιδανικό για αυτοματοποιημένες ή cron-based μεταφορές.

Δοκιμαστική μεταφορά με --dry-run

Ένα από τα πιο επαγγελματικά βήματα πριν τη μεταφορά μεγάλων δεδομένων είναι η χρήση του --dry-run. Δεν αντιγράφει πραγματικά τα αρχεία, αλλά δείχνει τι θα μεταφερθεί. Έτσι, αποφεύγονται λάθος paths ή απρόσμενες διαγραφές.

Παράδειγμα: rsync -avz --dry-run /var/www/site/ user@destination-ip:/var/www/site/. Θα δείτε τα αρχεία που πρόκειται να μεταφερθούν. Αν χρησιμοποιείτε --delete, το dry-run είναι απαραίτητο, καθώς μπορεί να διαγράψει αρχεία από τον προορισμό αν δεν υπάρχουν στο source.

Συνήθης workflow: SSH test, disk check, rsync --dry-run, μεταφορά μικρού φακέλου ως test, μετά το bulk transfer. Λίγα λεπτά δοκιμής γλιτώνουν ώρες αποτυχημένης μεταφοράς.

Επιλογές για performance: Compression, bandwidth, encryption

Το performance του rsync εξαρτάται από το μέγεθος αρχείων, CPU, τύπο δίσκου, latency, bandwidth και αριθμό αρχείων. Πολλά μικρά αρχεία είναι πιο αργά από ένα μεγάλο, λόγω metadata. Σε VPS με NVMe δίσκο, το scanning/writing είναι πολύ ταχύτερο – δείτε server NVMe VPS αν σχεδιάζετε βαριά μεταφορά.

-z (compression) βοηθά σε text files, logs, backups, αλλά σε ήδη compressed (zip, tar.gz, jpg, mp4) δεν προσφέρει σχεδόν τίποτα και μπορεί να επιβαρύνει την CPU. Σε media transfers μεταξύ γρήγορων servers, δοκιμάστε χωρίς -z. Αντίθετα, σε χαμηλό bandwidth και text-heavy files, το -z εξοικονομεί χρόνο.

Για περιορισμό bandwidth χρησιμοποιήστε --bwlimit. πχ --bwlimit=50000 (50 MB/s). Αυτό προστατεύει το traffic του live site. Μεταφέρετε αρχεία νύχτα, με bandwidth limit και monitorάρετε το load average.

Σύγκριση rsync, scp, SFTP και FTP

Σύγκριση rsync, scp, SFTP και FTP

Υπάρχουν αρκετές επιλογές για μεταφορά αρχείων – κάθε μία με πλεονεκτήματα και αδυναμίες. Ο παρακάτω πίνακας συνοψίζει πότε κάθε μέθοδος είναι καταλληλότερη για μεγάλες μεταφορές:

Σύγκριση rsync, scp, SFTP και FTP
Μέθοδος Ασφάλεια Συνέχιση από διακοπή Performance σε μεγάλα αρχεία Ιδανική χρήση
rsync + SSH Υψηλή Πολύ δυνατή Άριστη Μεταφορά server, backup, synchronization
scp Υψηλή Περιορισμένη Μέτρια Ταχεία αντιγραφή λίγων αρχείων
SFTP Υψηλή Εξαρτάται από client Μέτρια Manual file management
FTP Χαμηλή Εξαρτάται από client Μεταβλητή Legacy συστήματα χωρίς security requirements

Όπως φαίνεται, το rsync είναι κορυφαίο για επαναλαμβανόμενο synchronization και μεγάλες μεταφορές. Το scp είναι απλό αλλά δεν διαχειρίζεται αλλαγές αρχείων τόσο έξυπνα. Το FTP χωρίς encryption είναι παρωχημένο για σύγχρονο hosting. Για server-to-server μεταφορές, προτιμήστε SSH-based μεθόδους.

Ενδεικτική διαδικασία μεταφοράς live ιστοσελίδας

Η μεταφορά site δεν αφορά μόνο αρχεία – χρειάζεται έλεγχος DNS, database, SSL, PHP version, file permissions και email setup. Για sites με μεγάλα media, ακολουθήστε την παρακάτω διαδικασία για ελάχιστο downtime:

  • Ετοιμάστε server, PHP, database και modules στον νέο server.
  • Ρυθμίστε το TTL του domain σε χαμηλή τιμή (πχ 300 sec) πριν τη μεταφορά. Για domain management δείτε Αναζήτηση τομέα και διαχείριση τομέα.
  • Ξεκινήστε το πρώτο rsync με το site live – μεταφέρεται το bulk των δεδομένων.
  • Πάρτε backup της βάσης και μεταφέρετέ το.
  • Βάλτε το site σε maintenance mode.
  • Τρέξτε δεύτερο rsync για να συγχρονίσετε τυχόν αλλαγές.
  • Επικαιροποιήστε τη βάση ή κάντε incremental sync.
  • Ελέγξτε permissions, logs και λειτουργικότητα στον νέο server.
  • Εγκαταστήστε ή ανανεώστε SSL (δείτε Εγκατάσταση πιστοποιητικού SSL).
  • Ανανεώστε τα DNS records προς τη νέα IP.

Η κύρια μεταφορά γίνεται όσο το site λειτουργεί, ενώ το downtime περιορίζεται στο δεύτερο rsync και τη DNS αλλαγή – από ώρες σε λίγα λεπτά, ακόμα και για sites με μεγάλα media.

Έλεγχος ακεραιότητας δεδομένων

Μετά τη μεταφορά, δεν αρκεί να ολοκληρωθεί η εντολή – πρέπει να ελεγχθεί ο αριθμός αρχείων, τα μεγέθη και τα critical files. Χρησιμοποιήστε du -sh για συνολική σύγκριση, αλλά για ακριβή check ξανατρέξτε το rsync με τις ίδιες παραμέτρους – αν δεν υπάρχουν νέα αρχεία, το output είναι ελάχιστο.

Για checksum verification: rsync -avc --dry-run /source/folder/ user@destination-ip:/destination/folder/. Το -c ελέγχει και το checksum – προσφέρει extra ασφάλεια αλλά είναι απαιτητικό για CPU/disk. Για κρίσιμα αρχεία (database dumps, έγγραφα πελατών) συνιστάται.

Αν μεταφέρατε site, κάντε application-level test: homepage, admin panel, uploads, payments, contact forms, error logs. Ειδικά για e-shop, ελέγξτε payment integration και cron jobs.

Συχνά προβλήματα και λύσεις

Permission denied

Συμβαίνει λόγω user rights, destination write access ή SSH key error. Δοκιμάστε SSH login με τον ίδιο user, κάντε test για file creation στον destination folder, ρυθμίστε ownership με chown ή χρησιμοποιήστε sudo.

No space left on device

Όταν τελειώσει ο χώρος στο destination disk, η μεταφορά αποτυγχάνει. Ελέγξτε με df -h. Προσοχή: μπορεί να γεμίσει το /tmp ή κάποιο mount point αντί για τον κύριο disk. Καθαρίστε logs, old backups, cache. Για μόνιμη λύση, αναβαθμίστε σε μεγαλύτερο VPS.

Connection reset ή Broken pipe

Σε μεγάλες μεταφορές, το δίκτυο μπορεί να πέσει. Με --partial και --append-verify μπορείτε να συνεχίσετε από το σημείο που σταμάτησε. Ρυθμίστε SSH keepalive (ServerAliveInterval 60) για να μειώσετε disconnects.

Slow transfer

Η αργή μεταφορά μπορεί να οφείλεται σε πολλά μικρά αρχεία, disk I/O limits, compression overhead ή bandwidth. Για πολλά μικρά αρχεία, ίσως συμφέρει να τα αρχειοποιήσετε με tar πριν μεταφερθούν, αλλά χάνετε το incremental sync του rsync. Σε ήδη compressed files, δοκιμάστε χωρίς -z. Χρησιμοποιήστε iotop, htop, iftop για να εντοπίσετε bottleneck.

Best practices για ασφάλεια στη μεταφορά

Η ασφάλεια κατά τη μεταφορά server-to-server δεν πρέπει να παραμελείται – root access, SSH keys, backup αρχεία είναι ευαίσθητα. Προτιμήστε SSH keys αντί για password, κρατήστε τα key files με restrictive permissions και, αν μπορείτε, προστατέψτε τα με passphrase.

Δημιουργήστε προσωρινό χρήστη με access μόνο στα απαραίτητα folders. Απενεργοποιήστε τον user μετά τη μεταφορά. Περιορίστε SSH access σε συγκεκριμένα IPs. Firewall rules, Fail2ban και latest OpenSSH είναι must.

Μετά τη μεταφορά, διαγράψτε temporary και backup files, ειδικά sensitive data (sql, zip, tar) από web root – είναι σοβαρός κίνδυνος αν μείνουν προσβάσιμα. Κρατήστε τα σε private folders ή διαγράψτε τα αμέσως μόλις ολοκληρωθεί η μεταφορά.

Αυτοματοποιημένο backup με rsync

Το rsync δεν είναι μόνο για one-off μεταφορές – μπορεί να χρησιμοποιηθεί για scheduled backups μέσω cron. SSH key για passwordless και ασφαλή σύνδεση, rsync για μεταφορά μόνο των αλλαγμένων αρχείων, bandwidth limit κατάλληλο για production.

Παράδειγμα: rsync -a --delete --bwlimit=30000 /var/www/site/ backup@backup-ip:/backup/site/. Το --delete πρέπει να χρησιμοποιείται με προσοχή – αν ένα αρχείο διαγραφεί από το source, διαγράφεται και από το backup. Για critical backups, προτιμήστε λύσεις με snapshots, ημερήσια folders ή versioning.

Ακολουθήστε τον “κανόνα 3-2-1” για backups: 3 copies, 2 διαφορετικά μέσα, 1 σε διαφορετική τοποθεσία. Το rsync κάνει πρακτικό το server-to-server backup. Για infrastructure δείτε Λύσεις δημιουργίας αντιγράφων ασφαλείας και υπηρεσίες επαγγελματικού hosting.

Τελική checklist πριν τη μεταφορά

Πριν ξεκινήσετε bulk rsync transfer, ακολουθήστε την παρακάτω λίστα – μειώνει τα λάθη και είναι must σε production:

  • rsync εγκατεστημένο σε source & destination;
  • SSH connection δοκιμασμένη με σωστό user και port;
  • Επαρκής χώρος στον destination server;
  • Πρώτη δοκιμή με --dry-run;
  • Maintenance mode & τελικό sync για live site;
  • --delete δοκιμασμένο και paths επαληθευμένα;
  • Έλεγχος μεγέθους, permissions, application tests μετά τη μεταφορά;
  • Cleanup των temporary και backup files;

Τα παραπάνω είναι απλά, αλλά τα πιο συχνά λάθη προέρχονται από λάθος path, permissions, disk space ή απρογραμμάτιστη DNS αλλαγή. Ένα structured rsync process μειώνει το downtime και αυξάνει την ασφάλεια.

Συχνές ερωτήσεις

Αν διακοπεί η σύνδεση κατά τη μεταφορά με rsync μέσω SSH, ξεκινά από την αρχή;

Όχι – με σωστές παραμέτρους (πχ --partial, --append-verify) τα μεγάλα αρχεία συνεχίζονται από το σημείο που σταμάτησαν. Ωστόσο, ελέγξτε το disk space και τα partial files πριν επανεκκινήσετε τη μεταφορά.

Μπορεί το rsync να μεταφέρει απευθείας database;

Το rsync μεταφέρει αρχεία – δεν ενδείκνυται για live database files. Για MySQL/MariaDB χρησιμοποιήστε mysqldump ή physical backup tools και μετά μεταφέρετε το dump file με rsync. Σε live συστήματα, εφαρμόστε maintenance mode ή replication για consistency.

Απαιτείται root access και στους δύο servers για rsync;

Όχι – αρκεί user με write access στο destination. Για διατήρηση ιδιοκτησίας, ACL ή special permissions ίσως χρειαστεί υψηλότερη πρόσβαση, αλλά όπου είναι δυνατό, χρησιμοποιήστε περιορισμένους users για ασφάλεια.

Είναι ασφαλής η χρήση του --delete parameter;

Το --delete είναι χρήσιμο για mirror αλλά επικίνδυνο αν χρησιμοποιηθεί λάθος. Πάντα κάντε --dry-run και double-check paths πριν το χρησιμοποιήσετε, ειδικά σε production.

Για μεγάλες μεταφορές, rsync ή scp;

Για μικρές, one-off μεταφορές το scp είναι αρκετό, αλλά για μεγάλα αρχεία, πολλούς φακέλους ή επαναλαμβανόμενο sync το rsync είναι ανώτερο – διαχειρίζεται αλλαγές, partial transfers, bandwidth και testing.

Σύνοψη και επόμενα βήματα

Η μεταφορά μεγάλων αρχείων μεταξύ servers με rsync μέσω SSH είναι γρήγορη, ασφαλής και διαχειρίσιμη. Με σωστές παραμέτρους αντέχει σε διακοπές, μεταφέρει μόνο τις αλλαγές και μειώνει το downtime σε live sites. Ελέγξτε SSH και disk, κάντε δοκιμή με --dry-run και οργανώστε το bulk transfer.

Αν σχεδιάζετε μετάβαση σε νέο server, μεγαλύτερο storage ή πιο αποδοτικό hosting, δείτε τις λύσεις της Hostragons και επιλέξτε VPS, hosting, domain και SSL για ασφαλή μεταφορά. Ξεκινήστε με μικρές δοκιμές, μετρήστε και ολοκληρώστε το sync με προγραμματισμό.

Κοινοποιήστε αυτό το άρθρο:

Η Ομάδα της Hostragons

Ενημερωμένοι οδηγοί από την ομάδα των ειδικών μας σχετικά με τη φιλοξενία, τους διακομιστές και τα ονόματα τομέα. Ας βρούμε μαζί τη σωστή λύση για το έργο σας.

Επικοινωνήστε Μαζί Μας