Μπορείς να συνδέσεις απλά δυο υπολογιστές με ένα καλώδιο δικτύου και να κάνεις μεταφορές αρχείων; Ναι, μπορείς και είναι αρκετά εύκολο.
# Στον πρώτο υπολογιστή
# On sender...
ip address add dev eth0 fd42:dead:beef::1/48
ip link set dev eth0 up
# Στον άλλο υπολογιστή
# On receiver...
ip address add dev eth0 fd42:dead:beef::2/48
ip link set dev eth0 up
Μετά από λίγα δευτερόλεπτα ο ένας υπολογιστής βλέπει τον άλλο.
ping fd42:dead:beef::1
64 bytes from fd42:dead:beef::1: icmp_seq=1 ttl=64 time=0.649 ms
64 bytes from fd42:dead:beef::1: icmp_seq=2 ttl=64 time=0.376 ms
64 bytes from fd42:dead:beef::1: icmp_seq=3 ttl=64 time=0.414 ms
64 bytes from fd42:dead:beef::1: icmp_seq=4 ttl=64 time=0.340 ms
Και μπορούμε να μεταφέρουμε το αρχείο
# Στον πρώτο υπολογιστή που στέλνει το αρχείο
# On receiver...
socat - TCP6-LISTEN:1234 | dd status=progress > big_file.tar.gz
# Στον άλλο υπολογιστή λήψη του αρχείου
# On sender...
socat - 'TCP6-CONNECT:[fd42:dead:beef::2]:1234' < big_file.tar.gz
Και αυτό ήταν. Παίρνεις ταχύτητες μεταφοράς της τάξης των 6.7GB το λεπτό.
Στο παρελθόν για να το κάνεις αυτό ήθελες ένα ειδικό
crossoverκαλώδιο. Σήμερα κάθε καλώδιο μπορεί να το κάνει.
Μπορείς να το αυτοματοποιήσεις με το παρακάτω
#!/bin/bash
#
# Direct file transfer over a ethernet cable: no switch needed.
#
# Linux only, requires socat.
set -eo pipefail
echoerr() { echo "$@" 1>&2; }
if [[ $3 == "" ]]; then
echoerr "Usage: $0 <iface> tx/rx <filename>"
echoerr "Send files over an ethernet cable, requires root."
echoerr ""
echoerr "Receiving side should be started first."
exit 1
fi
export iface=$1
# Clear out existing addresses before configuring our own
ip address flush $iface
if [[ $2 == "tx" ]]; then
# IP configuration (disable duplicate address detection to avoid weird stalls)
ip address add dev "$iface" fd42:dead:beef::1/48 nodad
ip link set dev "$iface" up
# Wait for phy to configure...
while ! ip link show "$iface" | grep LOWER_UP -q; do
echoerr "Waiting for interface to come up..."
sleep 1
done
# ... and send the file!
echoerr "Connecting..."
socat - 'TCP6-CONNECT:[fd42:dead:beef::2]:1234' < "$3"
elif [[ $2 == "rx" ]]; then
# IP configuration
ip address add dev "$iface" fd42:dead:beef::2/48 nodad
ip link set dev "$iface" up
# Listen on the network for our file
# Using dd to provide progress and speed indications to stderr
echoerr "Waiting for file..."
socat - TCP6-LISTEN:1234 | dd status=progress bs=1M > "$3"
echo "All done!"
else
echoerr "Invalid subcommand."
exit 1
fi
# Clean up
ip link set dev $iface down
ip address flush $iface
Πότε είναι χρήσιμο;
Η μέθοδος αυτή είναι χρήσιμη μόνο για περιστασιακή χρήση ή στην ανάγκη αν θέλεις να μεταφέρεις κάποιο μεγάλο αρχείο γρήγορα και δεν έχεις άλλο εξοπλισμό. Πχ σε κάποιο απομακρυσμένο σημείο ή στο εξοχικό. Σήμερα μπορείς να το κάνεις και με USB-3 αν και οι δύο υπολογιστές το υποστηρίζουν και έχεις το καλώδιο. Μια άλλη χρήση είναι πέραν της ταχύτητας αν δε θέλεις να φύγουν οι πληροφορίες στο Internet.
Σε προϊστορικές εποχές είχα κάνει κάτι ανάλογο για μεταφορά iso, εποχές που για να γράψεις ένα CD δεν ήταν καθόλου απλό ή φτηνό. Τότε είχαμε φτιάξει το ειδικό καλώδιο. Σήμερα αυτό δεν είναι απαραίτητο και η απλότητα της μεθόδου μπορεί να φανεί χρήσιμη σε κάποιες ειδικές περιπτώσεις.
Πηγή:
Οι πληροφορίες και το πρόγραμμα είναι από εδώ:
Είναι με CC BY-NC-SA 4.0 License άδεια. Μια συζήτηση υπάρχει εδώ απο όπου και το βρήκα.
Επίσης δείτε
Φυσικά, υπάρχουν πολύ ποιο απλοί τρόποι για μεταφορά αρχείων. Το SMB και το NFS είναι ο σύνηθες τρόπος, αλλά υπάρχει και το FTP. Αλλά θέλουν στήσιμο. Για μια απλή μεταφορά δείτε
Για το NFS κάποιες πληροφορίες υπάρχουν εδώ:
Για το rsync