βοήθεια με rsync
Marios Zindilis
marios at zindilis.com
Thu Mar 31 13:20:53 UTC 2011
Δεν ξέρω αν θα κάνεις ακριβώς αυτό που θες με τις οδηγίες μου, αλλά
μπορείς να πάρεις κάποια ιδέα για να το προχωρήσεις.
Είπες ότι στον φάκελο προορισμού 1. υπάρχουν ήδη οι συμβολικοί δεσμοί,
και 2. έχουν τα ίδια ονόματα με τους πραγματικούς φακέλους στον φάκελο
προέλευσης.
Άρα, παίρνεις μια λίστα με τις πλήρεις διαδρομές των συμβολικών δεσμών,
τρέχοντας μέσα στον φάκελο προορισμού:
symlinks -rv /path/to/destination
Το -r τρέχει recursively, δηλαδή σε όλους τους υποφακέλους, και το -v
είναι το verbose, για να δείξει τις διαδρομές. Θα πάρεις μια λίστα με
πολλές καταχωρήσεις που θα μοιάζουν με:
dangling: /home/marios/.thunderbird/atyybh4c.default/lock -> 127.0.0.1:+3140
Από αυτές τις καταχωρήσεις θέλεις να κόψεις ότι υπάρχει μετά το πρώτο
διάστημα, άρα θα πασάρεις το αποτέλεσμα της πρώτης εντολής στο cut:
symlinks -rv . | cut -d' ' -f2
Το -d' ' λέει στο cut ποιός χαρακτήρας περικλείει το κομμάτι που
θέλουμε, και το -f2 του λέει να κρατήσει το δεύτερο αποτέλεσμα. Από το
προηγούμενο παράδειγμα που έδωσα, η εντολή θα επιστρέψει μόνο το:
/home/marios/.thunderbird/atyybh4c.default/lock
Αυτό είναι το όνομα του συμβολικού δεσμού, αλλά και το όνομα του
υποφακέλου στον φάκελο προορισμού όπως μας είπες. Θα κρατήσεις μία λίστα
λοιπόν με όλους τους συμβολικούς δεσμούς, ως εξής:
symlinks -rv . | cut -d' ' -f2 > list.txt
Αυτή τη λίστα θα την πασάρεις τώρα στο rsync, δίνοντας:
rsync -άλλες-παράμετροι --exclude-from 'list.txt' source/ destination/
Κάτι τέτοιο μπορεί να σε βοηθήσει να κάνεις αυτό που θέλεις, ή με κάποια
ακόμα παραλλαγή να βολευτείς.
--
Marios Zindilis
More information about the Ubuntu-gr
mailing list