Πώς μπορώ να αντιγράψω αρχεία σε ένα φάκελο σε άλλο φάκελο στο τερματικό Linux

How Can I Copy Files Folder Into Another Folder Linux Terminal



Όταν χρειάζεστε αντιγραφή του περιεχομένου ενός καταλόγου σε άλλο, στην περίπτωση του Linux, υπάρχουν πολλά εργαλεία στη διάθεσή σας. Ποιο να χρησιμοποιήσω; Εξαρτάται από την κατάσταση και τις προσωπικές προτιμήσεις. Σε αυτό το άρθρο, θα ρίξουμε μια ματιά στους τρόπους με τους οποίους μπορείτε να αντιγράψετε τα περιεχόμενα αρχείων από έναν φάκελο σε άλλο στο τερματικό. Θα περιλαμβάνει μερικές από τις δημοφιλείς επιλογές για διαφορετικές καταστάσεις.

Αντιγραφή αρχείου στο τερματικό

Η αντιγραφή του περιεχομένου ενός καταλόγου σε έναν άλλο είναι μια πολύ απλή εργασία. Ωστόσο, έχετε πολλές επιλογές για να το κάνετε. Το Linux είναι ευλογημένο με πολλά εργαλεία για τον χειρισμό αρχείων και καταλόγων μέσω διαφόρων ενεργειών.







Όλα τα βήματα παρουσιάζονται στο Ubuntu 18.04.1. Αρχικά, ας δημιουργήσουμε μια χούφτα εικονικά αρχεία για να δουλέψουμε.



$mkdir dir_A



Τώρα, ας δημιουργήσουμε τα εικονικά αρχεία χρησιμοποιώντας την αφή.





$αφήανδρείκελο{1..10}

Ας δημιουργήσουμε έναν άλλο φάκελο εντός dir_A με μια χούφτα εικονικά αρχεία.



$mkdir dir_B
$αφήανδρείκελο{1..10}

Τώρα, ολόκληρη η δομή του καταλόγου dir_A μοιάζει με αυτήν.

$δέντροdir_A

Cp Command

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

Αυτή είναι η βασική δομή του cp εντολή.

$cp <επιλογές>> <πηγή>> <προορισμός>>

Για παράδειγμα, ας κάνουμε ένα αντίγραφο του ομοίωμα 1 αρχείο με το όνομα dummy1_copy Το

$cpομοίωμα 1 ομοίωμα__αντιγραφή

Τώρα, ας προσπαθήσουμε να αντιγράψουμε πολλά αρχεία ταυτόχρονα. Για μια τέτοια λειτουργία, το cp απαιτεί ο προορισμός να είναι ένας κατάλογος. Εδώ, θα χρησιμοποιήσω την έκφραση μπαλαντέρ για να πιάσω όλα τα ανδρείκελο αρχεία και τοποθετήστε τα στο ~/Λήψεις Ευρετήριο.

$cpανδρείκελο*~/Λήψεις

Τι λέτε για την αντιγραφή ενός καταλόγου;

$cp -βρdir_A dir_A_copy

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

  • -r: Σημαίνει α αναδρομική αντίγραφο (συμπεριλαμβανομένων τυχόν κρυφών αρχείων). Πρέπει να έχετε σημαία εάν η αντιγραφή περιλαμβάνει έναν ολόκληρο κατάλογο ή περισσότερους.
  • -v: Σημαίνει πολύλογος Το Το εργαλείο cp θα εξάγει κάθε ενέργεια που εκτελεί.

Θέλετε να ακολουθήσετε τους συμβολικούς συνδέσμους; Προσθέστε τη σημαία -L.

$cp -Lvr <πηγή>> <προορισμός>>

Ας υποθέσουμε ότι ο κατάλογος προορισμού έχει ήδη ένα αρχείο με το ίδιο όνομα. Εάν θέλετε να αποφύγετε την αντικατάσταση, χρησιμοποιήστε τη σημαία -n. Θα διασφαλίσει ότι σε περίπτωση διένεξης, ο cp δεν θα αντικαταστήσει το αρχείο.

$cp -nv <πηγή>> <προορισμός>>

Εάν εκτελείτε μια ευαίσθητη ενέργεια αντιγραφής/επικόλλησης, είναι καλύτερα να έχετε τον καλύτερο έλεγχο του τι συμβαίνει, σωστά; Σε μια τέτοια περίπτωση, χρησιμοποιήστε τη σημαία -i. Αντιπροσωπεύει μια διαδραστική λειτουργία όπου ο cp θα ζητά επιβεβαίωση κάθε φορά που προκύπτει μια σύγκρουση.

$cp -Εγώ <πηγή>> <προορισμός>>

Εάν ενδιαφέρεστε περισσότερο, η σελίδα ανδρών είναι πάντα μια από τις καλύτερες τεκμηρίωση. Μάθετε περισσότερα για τον cp.

$άνδρας cp

εντολή mv

Το εργαλείο mv είναι παρόμοιο με το εργαλείο cp. Ωστόσο, αντί για αντιγραφή, το mv μετακινεί αρχεία και καταλόγους. Σε σύγκριση με το cp, είναι πιο απλό.

Η δομή εντολών του mv είναι παρόμοια με την cp.

$mv <επιλογή>> <πηγή>> <προορισμός>>

Για να μετακινήσετε το περιεχόμενο του dir_A προς το dir_A_αντιγραφή , εκτελέστε την ακόλουθη εντολή.

$mv dir_A/dir_A_αντιγραφή

Εδώ, η σημαία -v είναι για πολύλογος τρόπος. Εάν θέλετε να μετακινήσετε μόνο τα περιεχόμενα του dir_A, χρησιμοποιήστε το παρακάτω. Σε αυτήν την περίπτωση, ο κατάλογος προορισμού πρέπει να υπάρχει εκ των προτέρων.

$mv dir_A/ *dir_A_αντιγραφή

Το εργαλείο mv δεν έχει πολλά να συνεργαστεί. Για όλες τις διαθέσιμες επιλογές, ανατρέξτε στη σελίδα man.

$άνδρας mv

Εντολή Rsync

Αυτό είναι ένα από τα πιο δημοφιλή και ισχυρά εργαλεία για αντιγραφή αρχείων, που χρησιμοποιείται κυρίως για δημιουργία αντιγράφων ασφαλείας. Διαθέτει τη δυνατότητα αντιγραφής αρχείων μέσω απομακρυσμένης σύνδεσης. Σε αντίθεση με το cp και το mv, έρχεται επίσης με έναν τόνο προηγμένων επιλογών αντιγραφής αρχείων που προσφέρουν τη μέγιστη προσαρμογή της συμπεριφοράς του.

Το Rsync είναι κυρίως γνωστό για τον αλγόριθμο μεταφοράς δέλτα που μειώνει δραματικά τον όγκο των δεδομένων που πρέπει να ανταλλαχθούν. Στην περίπτωση του απομακρυσμένου συγχρονισμού, αυτό εξοικονομεί πολύ εύρος ζώνης.

Το Rsync δεν έρχεται γενικά προεγκατεστημένο σε καμία διανομή Linux. Ωστόσο, λόγω της δημοτικότητάς του, είναι τώρα διαθέσιμο σε όλες τις μεγάλες διανομές Linux. Χρήση Pkgs.org για να μάθετε το πακέτο rsync για τη διανομή σας. Υποθέτοντας ότι έχετε εγκαταστήσει το rsync, ας ξεκινήσουμε.

Πρώτον, η βασική δομή εντολών του rsync. Είναι αρκετά παρόμοιο με το cp.

$rsync<επιλογές>> <πηγή>> <προορισμός>>

Πριν ξεκινήσετε, εδώ είναι μια χούφτα δημοφιλών επιχειρημάτων rsync.

  • : Λεπτή λειτουργία, εξάγει οποιαδήποτε ενέργεια εκτελείται στην οθόνη της κονσόλας.
  • -vv : Λεπτή λειτουργία με περισσότερες λεπτομέρειες
  • -r : Αναδρομική λειτουργία, πρέπει να υπάρχει εάν αντιγράφετε καταλόγους
  • -Με : Συμπίεση δεδομένων
  • -προς το : Αρχεία δεδομένων
  • : Στεγνό τρέξιμο, πρέπει να εκτελείται σε συνδυασμό με λεπτομερή λειτουργία. Απλώς εξάγει τις ενέργειες εάν η εντολή έπρεπε να εκτελεστεί πραγματικά
  • -διαγράφω : Διαγράψτε τα αρχεία και τους καταλόγους στον κατάλογο προορισμού εάν ο πηγαίος κατάλογος δεν τα περιέχει πλέον
  • -όχι ολόκληρο το αρχείο : Αναγκάζει το rsync να χρησιμοποιήσει τον αλγόριθμο μετάδοσης δέλτα, ανεξάρτητα από το τι. Χρήσιμο σε σενάρια όπου πρέπει να διασφαλίσετε τη μικρότερη δυνατή εγγραφή δεδομένων.
  • –Αφαίρεση-πηγή-αρχείο : Διαγράψτε τα αρχεία προέλευσης (ες) μετά την αντιγραφή.

Ας τα ελέγξουμε εν δράσει. Πρώτον, το αντίγραφο του καταλόγου. Εκτελέστε την ακόλουθη εντολή.

$rsync-βρdir_A/dir_A_αντιγραφή

Για περαιτέρω λεπτομερή έξοδο, ας χρησιμοποιήσουμε τη σημαία -vv.

$rsync-vv -rdir_A/dir_A_αντιγραφή

Τώρα, ας δούμε το δροσερό μέρος του rsync. Συζητήσαμε πώς το rsync αντιγράφει έξυπνα μόνο τα αρχεία που έχουν τροποποιηθεί, εξοικονομώντας εύρος ζώνης και εγγραφή δίσκου. It’sρθε η ώρα να το ελέγξετε εν δράσει. Σε αυτό το παράδειγμα, η ενέργεια θα εκτελεστεί εντός του dir_A Ευρετήριο.

$rsync-vv -χωρίς ολόκληρο το αρχείοανδρείκελο*dir_B/

Παρά την ενεργοποίηση της μετάδοσης δέλτα, το rsync ενδέχεται να μην το εφαρμόσει όταν εκτελείτε μεταφορά τοπικών δεδομένων.

Τώρα, ας δούμε τη λειτουργία ξηρού τρεξίματος. Πριν από την εκτέλεση οποιασδήποτε εντολής rsync, είναι πάντα σημαντικό να το δοκιμάσετε εκ των προτέρων. Εδώ έρχεται η ξηρή εκτέλεση. Το Rsync θα εξάγει τι θα συμβεί εάν η εντολή έπρεπε να εκτελεστεί πραγματικά.

$rsync-ανβρdir_A/dir_A_αντιγραφή

Το Rsync μπορεί επίσης να λειτουργήσει με απομακρυσμένους καταλόγους, χωρίς πρόβλημα. Το μόνο που χρειάζεται είναι μια σωστή σύνδεση SSH με κλειδιά SSH ρυθμισμένα.

$ rsync<επιλογή>> <local_dir>>
<όνομα χρήστη> @<απομακρυσμένος υπολογιστής>>:<προορισμός_dir>>

Θέλετε να εκτελέσετε μια κίνηση μετακίνησης; Για να το θέσουμε αυτό από την άποψη του rsync, το rsync θα αντιγράψει τα περιεχόμενα του καταλόγου προέλευσης και, στη συνέχεια, θα διαγράψει το περιεχόμενο πηγής.

$rsync --αφαίρεση αρχείων-πηγών <πηγή>> <προορισμός>>

Δείτε το αποτέλεσμα της επέμβασης.

$δέντροdir_A

$δέντροdir_A_αντιγραφή

Τελικές σκέψεις

Το cp και το rsync είναι τα πιο κοινά εργαλεία που μπορείτε να χρησιμοποιήσετε για την αντιγραφή αρχείων σε ένα φάκελο στο τερματικό Linux. Και τα δύο είναι επίσης πολύ καλά για σενάριο. Απλώς βεβαιωθείτε ότι έχετε δοκιμάσει τις λειτουργίες πριν από την εφαρμογή.

Απολαμβάνω!