Mon souci : j'ai un dossier "projet" avec pas mal de sous dossier, et dans certains sous dossiers, il y a des liens symboliques vers un dossier de "projet/data".
le premier probleme, c'est que data fait 200Go,
le deuxieme je dois transferer ce dossier de projet sur un serveur CIFS, serveur qui ne gere evidemment pas les liens symboliques (mais gere la deduplication)
1° idée : tu remplaces les liens par un copie physique des datas, le serveur deduplique, ton dossier projet ne fera alors que 200Go+ les readmes, docs autours
mais si je ressors le projet pour l'utiliser sur un serveur qui ne gere pas les deduplications, ca ferait un dossier de 1To :(
2° idée : remplacer les liens symboliques par un vrai dossier, qui contient juste un readme.txt disant que les données se trouvent reellement dans le dossier projet/data.
seulement comme j'ai plein de sous dossiers ou potentiellement je peux avoir à mettre ce readme.txt
je souhaitais automatiser ca.
Voici une arborescence d'exemple
.
├── Data
│ └── DR1
└── R1
├── Data -> ../Data/
└── SR1
├── Data -> ../../Data/
├── SSR1
│ └── DR1 -> ../../../Data/DR1
└── SSR2
└── Data -> ../../../Data/
il faudrait donc generer les dossiers et fichiers suivants
R1/Data/readme
R1/SR1/Data/readme
R1/SR1/SSR1/DR1/readme
R1/SR1/SSR2/Data/readme
J'ai une amorce de solution,
find -type l
sait me sortir les liens
find -type l -exec ls -l {} \; | cut -d' ' -f10-12
oufind -type l -exec ls -l {} \; | awk '{print $9" "$10" "$11}'
savent me sortir les liens et leurs destinations
Helas, aujourd'hui j'ai la flemme, alors si, toi qui me lis, tu veux jeter un oeil à mon probleme ? ?
# Pareil j'ai la flemme
Posté par Flyounet (site web personnel) . Évalué à 1.
Disons :
find path -type l -print -exec readlink {} \;
Ou moins flemme :
find path -type l | while read a ; do echo "$a ---> $(readlink $a)";done
[^] # Re: Pareil j'ai la flemme
Posté par NeoX . Évalué à 2.
je ne cherches pas à remplacer mon find qui fait deja ce que je veux
mais à faire un script qui
- stock la destination du lien (../../Data/DR1 par exemple)
- supprime le dossier qui est un lien
- creer le dossier du meme nom mais en dur
- creer un fichier dans ce dossier qui dit aux gens que les données se trouve dans ../../Data/DRA (pour notre exemple)
ah ben du coup je viens d'ecrire l'algorythme.
finalement le plus dur est fait,
je vais faire un script qui fait ca, que je donnerais à find.
[^] # Re: Pareil j'ai la flemme
Posté par NeoX . Évalué à 4. Dernière modification le 03 avril 2014 à 18:06.
Merci à ceux qui ont jeté un oeil, meme rapide au sujet,
la flemme etant partie apres la "sieste", voici le petit script qui me va bien
meme s'il peut surement etre amelioré :
qui produit une arborescence comme celle là
[^] # Re: Pareil j'ai la flemme
Posté par zipe31 . Évalué à 1.
Salut,
Juste un truc qui me chiffonne ;-\
Pourquoi le -exec ls -l {} \; | awk '{print $9}' ?
find -type l | while read a … devrait suffire, non ?
[^] # Re: Pareil j'ai la flemme
Posté par NeoX . Évalué à 2.
tout à fait
le script devient donc
[^] # Re: Pareil j'ai la flemme
Posté par Thomas Debesse (site web personnel) . Évalué à 1.
Méfiance avec les
command | while read line
(que je fais souvent aussi ;) ), si read se met à faire de l’interactif et à lister le dossier courant si la ligne contient une tabulation…Aussi méfiance avec
find | command
si le fichier a des caractères moisis. J’ai plusieurs fois vu des scripts àlafind | cpio
se vautrer parce qu’un nom de fichier contenait un alinéa ou autre caractère improbable.Le plus sûr est d’écrire un script tiers en blindant les paramètres de précautions.
Voire, la précaution ultime si on ne passe qu’un seul nom de fichier en argument au script appelé par exec :
ce commentaire est sous licence cc by 4 et précédentes
[^] # Re: Pareil j'ai la flemme
Posté par errno . Évalué à 1.
J'espère que ton algorithme aura le rythme dans la peau
[^] # Re: Pareil j'ai la flemme
Posté par NeoX . Évalué à 2.
en tout cas il tient la cadence :p
# Je veux bien ....
Posté par totof2000 . Évalué à 4.
à 600 euros/jour.
# tar
Posté par Kerro . Évalué à 2.
Sans avoir vérifié, je pense que tu peux utiliser tar en lui indiquant de copier les contenus pointés par les liens symboliques.
[^] # Re: tar
Posté par NeoX . Évalué à 3.
l'idée de la copie est à proscrire…
le dossier Data fait 200**Go**
et il est referencé une dizaine de fois dans les sous dossiers.
[^] # Re: tar
Posté par Kerro . Évalué à 2.
Tu indiques devoir transférer ces données sur un truc en CIFS. Donc il faut que tu les copies à un moment.
[^] # Re: tar
Posté par NeoX . Évalué à 3.
J'ai ce dossier A sur un serveur B
je dois transferer ca sur le serveur C (CIFS) qui ne gere pas les liens.
si j'ai 200Go dans le dossier Data, et qu'il est lié 10 fois dans les sous dossiers,
ca va me faire 2To une fois dereferencé, ce que je veux absolument eviter.
d'ou le script qui remplace les liens par un dossier avec un fichier disant ou se trouve les données censées se trouver là.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.