Χρήση cURL για λήψη απομακρυσμένων αρχείων από τη γραμμή εντολών
Πίνακας περιεχομένων:
- Λήψη αρχείων ακριβούς αντιστοίχισης με μπούκλα -O
- Αποθήκευση απομακρυσμένου αρχείου με διαφορετικό όνομα με curl -o
- Λήψη πολλών αρχείων ταυτόχρονα με το curl
Το ισχυρό εργαλείο γραμμής εντολών curl μπορεί να χρησιμοποιηθεί για τη λήψη αρχείων από σχεδόν οποιονδήποτε απομακρυσμένο διακομιστή. Οι μακροχρόνιοι χρήστες της γραμμής εντολών γνωρίζουν ότι αυτό μπορεί να είναι χρήσιμο για μια μεγάλη ποικιλία καταστάσεων, αλλά για να είναι απλά τα πράγματα, πολλοί θα διαπιστώσουν ότι η λήψη ενός αρχείου με curl μπορεί συχνά να είναι μια πιο γρήγορη εναλλακτική στη χρήση ενός προγράμματος περιήγησης ιστού ή ενός προγράμματος-πελάτη FTP από την πλευρά του GUI Mac OS X (ή linux).Αυτό είναι χρήσιμο για τοπικές καταστάσεις, αλλά έχει ιδιαίτερη αξία εάν βρίσκεστε σε μια κατάσταση όπου πρέπει να κάνετε λήψη κάτι σε απομακρυσμένο Mac όταν συνδέεστε μέσω SSH.
Για τους σκοπούς αυτής της περιγραφής, θα επικεντρωθούμε κυρίως στη λήψη αρχείων από τα δύο πρωτόκολλα HTTP και SFTP που συναντώνται συνήθως, αν και πρέπει να σημειωθεί ότι το cURL υποστηρίζει πολλά περισσότερα πρωτόκολλα. Αν και το curl είναι εύκολο στη χρήση, συνιστάται η γνώση της γραμμής εντολών.
Λήψη αρχείων ακριβούς αντιστοίχισης με μπούκλα -O
Χρησιμοποιώντας την κεφαλαία σημαία -O με curl κατεβάζει το αρχείο από τον απομακρυσμένο διακομιστή ενώ διατηρεί το ακριβές όνομα αρχείου, η βασική σύνταξη για αυτό είναι η εξής:
μπούκλα -O
Αυτό σημαίνει ότι εάν το καθορισμένο αρχείο URL ονομάζεται "sample.zip" θα γίνει λήψη με το όνομα αρχείου "sample.zip" και εάν το αρχείο ονομάζεται κάτι τεράστιο και περίπλοκο όπως "LongExampleFileNameForOSXDaily-v- 1-3-51-revision-515b12-readme.txt» στον απομακρυσμένο διακομιστή, θα αποθηκευτεί με αυτό ακριβώς το όνομα στον τοπικό υπολογιστή. Τα μεγαλύτερα ονόματα αρχείων συχνά αντιμετωπίζονται καλύτερα με τη σημαία -o αντί για -O, την οποία θα αναφερθούμε σύντομα.
Οι τακτικοί αναγνώστες μπορεί να θυμούνται ότι χρησιμοποιήσαμε την εντολή curl -O όταν εξηγούσαμε πώς να εξαγάγουμε το πραγματικό περιεχόμενο ήχου από ένα αρχείο ροής m3u.
Η έναρξη οποιασδήποτε λήψης με curl δείχνει το ποσοστό που μεταφέρθηκε, τον χρόνο που αφιερώθηκε στη λήψη και τον υπολειπόμενο χρόνο και την ταχύτητα μεταφοράς.
Το στιγμιότυπο οθόνης προσφέρει καλύτερη αναπαράσταση από το επικολλημένο παράδειγμα παρακάτω, αλλά μοιάζει κάπως έτσι:
% Σύνολο % ληφθέντων % Xferd Μέση ταχύτητα Χρόνος Χρόνος Τρέχουσα Μεταφόρτωση Συνολικά ξοδευμένη αριστερή ταχύτητα 100 10505 100 10505 0 0 79741 0 --:--:-- --:--:-- --:--:-- 142k
Με την ένδειξη της ταχύτητας μεταφοράς, θα μπορούσατε να ανακατευθύνετε την έξοδο του curl στο /dev/null και να το χρησιμοποιήσετε για να δοκιμάσετε την ταχύτητα σύνδεσης στο Διαδίκτυο, αλλά η εντολή wget έχει ευκολότερη ανάγνωση και παρακολούθηση της γραμμής μεταφοράς, επομένως το wget είναι καλύτερο κατάλληλο για αυτήν την εργασία.
Αποθήκευση απομακρυσμένου αρχείου με διαφορετικό όνομα με curl -o
Χρησιμοποιώντας μια σημαία πεζών -o θα σας επιτρέψει να καθορίσετε ένα διαφορετικό όνομα αρχείου για το ληφθέν αρχείο από το πώς ονομάζεται στον απομακρυσμένο διακομιστή. Αυτό μπορεί να είναι χρήσιμο για να μειώσετε τα μεγάλα ονόματα αρχείων ή απλώς να επισημάνετε κάτι, ώστε να είναι ευκολότερο να το βρείτε μόνοι σας. Η γενική σύνταξη θα ήταν:
μπούκλα -ο
Για παράδειγμα, εάν θέλετε να αποθηκεύσετε ένα αρχείο iOS IPSW που βρήκατε καταχωρισμένο στους διακομιστές της Apple χωρίς να έχετε το μακροσκελές πλήρες όνομα, μπορείτε να χρησιμοποιήσετε τα εξής:
curl -o iPhone5C-704.ipsw http://appldnld.apple.com/iOS7/031-1828.20131114.P3wE4/iPhone5, 3_7.0.4_11B554a_Rest.
Με αυτόν τον τρόπο θα γίνει λήψη του αρχείου “iPhone5, 3_7.0.4_11B554a_Restore.ipsw”, αλλά θα ονομάζεται συντομότερο ως το πιο ουσιαστικό “iPhone5C-704.ipsw”.
Αν προτιμάτε να μην αποθηκεύσετε το αρχείο στον τρέχοντα κατάλογο εργασίας, καθορίστε μια διαδρομή ως μέρος του ονόματος αρχείου όπως:
curl -o ~/Desktop/localexample.dmg http://url-to-file/example.dmg
Λήψη πολλών αρχείων ταυτόχρονα με το curl
cURL μπορεί εύκολα να κατεβάσει πολλά αρχεία ταυτόχρονα, το μόνο που χρειάζεται να κάνετε είναι να καθορίσετε περισσότερες από μία διευθύνσεις URL όπως:
μπούκλα -O
Για αρχεία με διαφορετικά ονόματα ή που φιλοξενούνται σε διαφορετικούς διακομιστές ή σε διαφορετικές διαδρομές καταλόγου, χρησιμοποιήστε την πλήρη διεύθυνση URL, για παράδειγμα:
curl -O http://ftp.gnu.org/gnu/Licenses/fdl-1.1.txt http://ftp.gnu.org/gnu/ Άδειες χρήσης/lgpl-2.1.txt http://ftp.gnu.org/gnu/GNUinfo/Audio/index.txt
Από την άλλη πλευρά, εάν τα ονόματα αρχείων που πρόκειται να ληφθούν χρησιμοποιούν αυξητική ονομασία, μπορείτε να χρησιμοποιήσετε αγκύλες για να καθορίσετε ένα εύρος λήψης, όπως:
curl -O http://ftp.gnu.org/gnu/Licenses/fd1-1.txt
Αυτό θα αρπάξει τα αρχεία fdl-1.1.txt, fd1-1.2.txt και fd1-1.3.txt ταυτόχρονα χωρίς να χρειάζεται να καθορίσετε κάθε μοναδική διεύθυνση URL. Φυσικά αυτό λειτουργεί μόνο εάν τα αρχεία βρίσκονται στον ίδιο κατάλογο μαζί και στον ίδιο τομέα.
Έλεγχος ταυτότητας με μπούκλα
Μπορείτε επίσης να περάσετε τον έλεγχο ταυτότητας με το cURL χρησιμοποιώντας τη σημαία -u:
curl -u χρήστη:pass -O ftp://remote_url/file-to-download.zip
Λάβετε υπόψη ότι το ιστορικό bash θα αποθηκεύσει τον κωδικό πρόσβασης σε απλό κείμενο όταν χρησιμοποιείτε το -u με καθορισμένο όνομα χρήστη και κωδικό πρόσβασης, επομένως αυτό δεν συνιστάται για τις περισσότερες περιπτώσεις. Μπορείτε να το ξεπεράσετε τοποθετώντας ένα κενό μπροστά από το «μπούκλα».Εάν δεν χρησιμοποιείτε το πλήκτρο διαστήματος για να ορίσετε το πρόθεμα της εντολής, πιθανότατα θα θέλετε να αδειάσετε το ιστορικό εντολών στη συνέχεια για να είστε ασφαλείς.
Υποστηριζόμενα πρωτόκολλα curl & χρήση πέρα από HTTP & FTP
Όπως αναφέρθηκε προηγουμένως, η χρήση του cURL υπερβαίνει κατά πολύ τα HTTP και FTP, καθώς η καταχώριση της μη αυτόματης σελίδας curl αναφέρει πρόσθετα πρωτόκολλα στην περιγραφή:
Επιπλέον, θα διαπιστώσετε ότι το curl μπορεί επίσης να χρησιμοποιηθεί για αιτήματα PUT και POST, cookies, διακομιστές μεσολάβησης, σήραγγες, λήψεις συνέχισης, ακόμη και για την απόκτηση πληροφοριών κεφαλίδας HTTP ή την αλλαγή ενός παράγοντα χρήστη (πρακτικά πλαστογράφηση) χωρίς την ανάγκη χρήσης αποκλειστικού προγράμματος περιήγησης στο Web.
Όπως τα περισσότερα βοηθητικά προγράμματα της γραμμής εντολών, μπορείτε να μάθετε πολύ περισσότερα για το curl καλώντας την κατάλληλη σελίδα man με την εντολή "man curl".