Αντιγραφή αρχείων

Εικόνα: markos
Submitted by markos on Δευ, 05/03/2007 - 04:14

Με την αντιγραφή αρχείων μπορούμε να πάρουμε ένα αρχείο (το αρχείο προέλευσης ή source file) και να αντιγράψουμε τα δεδομένα του σε ένα νέο αρχείο (το αρχείο προορισμού, target file) χωρίς να πειράξουμε το αρχείο προέλευσης. Θα έχουμε έτσι δύο πανομοιότυπα αρχεία με διαφορετικά ονόματα.

Για την αντιγραφή αρχείων χρησιμοποιείται η εντολή cp. Ανάλογα με τις επιλογές, το αποτέλεσμα της εντολής μπορεί να καλύπτει μεγάλο φάσμα αναγκών. Γενικά, η σύνταξή της είναι αρκετά απλή:

cp [OPTIONS] source target

ή για την αντιγραφή πολλών αρχείων σε ένα κατάλογο

cp [OPTIONS] filelist ... directory

όπου source το αρχείο ή ο κατάλογος προέλευσης και target το αρχείο ή κατάλογος προορισμού, ή για το δεύτερο τρόπο σύνταξης, filelist είναι η λίστα των αρχείων προέλευσης και directory το όνομα του καταλόγου στον οποίο θα αντιγραφούν όλα τα αρχεία που δίνονται στη λίστα.

Οι επιλογές που μπορεί να δεχτεί η εντολή είναι οι εξής:

Επιλογές
Λειτουργία
-a
--archive
Πραγματοποιεί ένα ακριβές αντίγραφο του αρχείου ή του καταλόγου που δίνεται ως source. Έχει το ίδιο αποτέλεσμα με τη χρήση των επιλογών -dpR.
-b
--backup
Πραγματοποιεί ένα αντίγραφο ασφαλείας οποιονδήποτε ήδη υπαρχόντων αρχείων προέλευσης.
-d Έχει το ίδιο αποτέλεσμα με την --no-dereference --preserve=link.
--no-dereference Αντιγράφει το συμβολικό δεσμό και όχι το αρχείο στο οποίο δείχνει ο σύνδεσμος.
-f
--force
Αντικατάσταση των υπαρχόντων αρχείων προορισμού.
-i
--interactive
Διαλογική αντιγραφή αρχείων. Ο χρήστης ερωτάται για κάθε αρχείο που πρόκειται να αντικατασταθεί.
-p
--preserve
Διατήρηση των αδειών προσπέλασης και των ιδιοκτητών των αρχείων προέλευσης στα αρχεία προορισμού.
-r, -R
--recursive
Αναδρομική αντιγραφή όλων των καταλόγων που περιλαμβάνονται στα αρχεία προέλευσης. Δηλαδή, αντιγράφει όλα τα αρχεία, τους καταλόγους και τα περιεχόμενά τους.
-s
--symbolic-link
Δημιουργία συμβολικών συνδέσμων αντί για πραγματική αντιγραφή αρχείων.
-u
--update
Αντιγραφή μόνο των αρχείων προέλευσης που είναι νεώτερα από τα αρχεία προορισμού ή όταν τα αρχεία προορισμού δεν υπάρχουν.
-v
--verbose
Αναλυτική περιγραφή της διαδικασίας της αντιγραφής.

Για καλύτερη κατανόηση, παραθέτουμε ορισμένα παραδείγματα χρήσης της εντολής cp:

$ cp -pv *.txt texts

Αντιγράφει όλα τα αρχεία με κατάληξη .txt στον κατάλογο texts (αν υπάρχει), διατηρώντας όλες τις άδειες προσπέλασης και τους ιδιοκτήτες, δίνοντας ταυτόχρονα αναλυτική περιγραφή της διαδικασίας.

$ cp -a Source /tmp/newSource

Δημιουργεί ένα ακριβές αντίγραφο ολόκληρου του καταλόγου Source (μαζί με τα περιεχόμενά του) στον κατάλογο /tmp/newSource.

$ cp -u /var/log/*.log /backup/var/log

Αντιγράφει μόνο τα αρχεία με κατάληξη .log του καταλόγου /var/log που έχουν υποστεί αλλαγές, στον κατάλογο /backup/var/log.

$ cp -vR ${HOME}/Mail /tmp/OldMails

Αντιγράφει αναδρομικά όλα τα αρχεία του καταλόγου Mail που βρίσκεται στον κατάλογο $HOME του χρήστη στον κατάλογο /tmp/OldMails, δίνοντας ταυτόχρονα αναλυτική περιγραφή της διαδικασίας.