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

Είπες ότι στον φάκελο προορισμού 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

--
Ubuntu-gr mailing list
[email protected]

If you do not want to receive any more messages from the ubuntu-gr mailing 
list, please follow this link and choose unsubscribe:
https://lists.ubuntu.com/mailman/listinfo/ubuntu-gr

Απαντηση