Page 1 sur 1

[mv] mv avec exclusions (résolu)

Publié : mar. 16 févr. 2021, 11:23
par NY152
Bonjour,

Je cherche une solution (j'ai trouvé tout et n'importe quoi) pour déplacer un backup sur un autre média.

Comme c'est des données importantes, je ne peux pas non plus m'amuser à faire des tests dessus.

En gros, j'ai une grande arborescence à déplacer et dans chaque dossier que composent cette dernière, j'ai un dossier .tmp à omettre. Si optionnellement, je peux omettre 1 ou 2 noms de fichiers (nom de fichier identique aussi) dans tous les répertoires, ça serait Byzance !

Si quelqu'un sait quelles est la commande qui me permettra d'arriver au résultat que je recherche, j'en serai ravi ^^

Par avance, merci

Re: [mv] mv avec exclusions

Publié : mar. 16 févr. 2021, 14:06
par FoolEcho
Salut,

mv seul n'est pas capable de faire une telle exclusion à ma connaissance.

De là tu as foule d'options:
* rsync : comprend une option pour exclure ce que tu veux de la copie (--exclude=PATTERN).
* find + mv : permet de filtrer en amont avant d'exécuter une commande (mv ici) sur la liste retenue (pour exclure ce sera du style ! -path '.tmp').
* mv suivi de find + option delete ou commande rm : faire un mv normal puis un find portant sur les .tmp/ couplé à --delete ou exec rm.

rsync est de loin le plus abordable syntaxiquement parlant par rapport aux options impliquant find. La moins dangereuse de de fait.

Vu que ces données sont importantes... il est important d'en avoir une copie... copie sur laquelle tu peux tester. :mrgreen:

Re: [mv] mv avec exclusions

Publié : mar. 16 févr. 2021, 16:20
par NY152
C'est la première des copies (qui doit être déplacée) pour en effectuer une autre qui partira sur un autre site mais tu es gentil mais m'amuser à faire une copie de 10 To juste pour tester, ça va aller ^^

En fait find ne ferait qu'enfoncer une porte ouverte TOUS les dossiers de l'arborescence ont un dossier .tmp (mais j'avoue c'est pas forcément le cas de certains fichiers). De plus les dossier .tmp doivent rester sur la sourceet rien du reste (à par certaines exceptions que je veux appliquer à quelques fichier aussi)

L'option rsync est peut être la plus abordable mais les données ne sont pas déplacées, juste dupliquées, elles DOIVENT être déplacées.

Re: [mv] mv avec exclusions

Publié : mar. 16 févr. 2021, 17:32
par NY152
Si je fais un :

Code : Tout sélectionner

rsync -zarvh --progress --remove-source-files --exclude=".tmp" --exclude="_tmp.tar.bz2" /source_du_backup /destination_du_backup
Ai-je une chance d'avoir ce que je cherche ?

Après, là où je ne suis pas serein c'est dans l'option --remove-source-files (option que j'ai trouvé dans des exemples sur le net mais dans le man il n'y a que --remove-sent-files (je présume que c'est la même chose ?)), cette option supprime les éléments un à un QUE si les éléments copiés n'ont pas générés d'erreurs ou tout est supprimé à la fin du processus de copie ?

Le processus s'arrête-t-il en cas d'erreur ?

Re: [mv] mv avec exclusions

Publié : mar. 16 févr. 2021, 19:49
par benjarobin
Dans le man il y a bien --remove-source-files
This tells rsync to remove from the sending side the files (meaning non-directories) that are a part of the transfer and have been successfully duplicated on the receiving side.
...

Re: [mv] mv avec exclusions

Publié : mar. 16 févr. 2021, 20:41
par NY152
C'était pas trop la question ^^

Re: [mv] mv avec exclusions

Publié : mar. 16 févr. 2021, 22:21
par FoolEcho
NY152 a écrit : mar. 16 févr. 2021, 16:20 C'est la première des copies (qui doit être déplacée) pour en effectuer une autre qui partira sur un autre site mais tu es gentil mais m'amuser à faire une copie de 10 To juste pour tester, ça va aller ^^
Ah... Peut-être baisser le sarcasme d'un ton et réfléchir 2 minutes ou lire le man : par exemple en ne testant que sur une partie de tes données (c'est-à-dire sur une structure similaire en plus, pas forcément des données réelles)...
Avec rsync tu as également l'option --list-only pour juste afficher la liste et ainsi la contrôler avant de lancer vraiment la commande.
Ou mieux : --dry-run pour simuler (aucun changement ne sera effectué).
NY152 a écrit : mar. 16 févr. 2021, 16:20 En fait find ne ferait qu'enfoncer une porte ouverte TOUS les dossiers de l'arborescence ont un dossier .tmp (mais j'avoue c'est pas forcément le cas de certains fichiers). De plus les dossier .tmp doivent rester sur la sourceet rien du reste (à par certaines exceptions que je veux appliquer à quelques fichier aussi)
Et alors ? find filtre les fichiers qui t'intéressent (donc moins ceux que tu exclues) et tu fais ce que tu veux de cette liste, en l'occurrence les déplacer. Le reste ne bougera pas.
Et comme vu ensuite, rsync peut très bien agir de même et supprimer la source...
NY152 a écrit : mar. 16 févr. 2021, 17:32 Après, là où je ne suis pas serein c'est dans l'option --remove-source-files (option que j'ai trouvé dans des exemples sur le net mais dans le man il n'y a que --remove-sent-files (je présume que c'est la même chose ?)), cette option supprime les éléments un à un QUE si les éléments copiés n'ont pas générés d'erreurs ou tout est supprimé à la fin du processus de copie ?

Le processus s'arrête-t-il en cas d'erreur ?
C'est dans le man que t'a pointé benjarobin : la suppression de la source n'a lieu que si le fichier a pu être correctement copié sur sa destination (pas d'erreur I/O). Attention car cela ne concerne pas les répertoires.
Le processus tentera d'aller au bout normalement, en sortie il t'indiquera un code d'erreur le cas échéant ainsi que les fichiers qui auront posé des problèmes, sauf s'il y a erreur avant même de commencer le traitement bien sûr (tu auras sans doute intérêt à rediriger la sortie de la commande vers un fichier de log).
NY152 a écrit : mar. 16 févr. 2021, 17:32 Si je fais un :

Code : Tout sélectionner

rsync -zarvh --progress --remove-source-files --exclude=".tmp" --exclude="_tmp.tar.bz2" /source_du_backup /destination_du_backup
Ai-je une chance d'avoir ce que je cherche ?
A priori oui. Comme dit plus haut, tu peux simuler l'exécution avec --dry-run.
Faut te méfier aussi si tu as des liens symboliques, pareil y a des options pour les préserver. Idem pour les permissions (d'après tes options, je crois que tu préserves à peu près tout, donc ça paraît ok).

Re: [mv] mv avec exclusions

Publié : mar. 16 févr. 2021, 23:16
par NY152
Merci pour ces information, ça va m'aider !

Par contre, pour le sarcasme, je ne suis pas d'accord. Juste un peu d'humour, par contre toi en me prenant de haut parce que Mr semble tout savoir, là on peut en parler ^^

Du coup là c'est du sarcasme !

La prochaine fois que tu interviens dans un thread fais preuve de plus de respect et de moins de condescendance, sans rancune :)

Re: [mv] mv avec exclusions

Publié : mer. 17 févr. 2021, 00:55
par benjarobin
NY152 a écrit : mar. 16 févr. 2021, 23:16La prochaine fois que tu interviens dans un thread fais preuve de plus de respect et de moins de condescendance, sans rancune :)
Ah oui, quand même... FoolEcho a au contraire été très patient, à fait une réponse très construite et constructive, suite à tes messages qui été "sarcastiques". Je suis dépité...
Si tu te trouves attaqué/vexé car FoolEcho et moi même ont pointé du doigt (très gentiment ici) le fait que tu n’ai manifestement pas vraiment cherché à lire le man, c'est un peu triste :(

Re: [mv] mv avec exclusions (résolu)

Publié : mer. 17 févr. 2021, 01:04
par NY152
Il a fait une réponse et je l'ai remercié pour ça, en revanche, les attaques gratuites, je suis contre.

Le sujet ayant été résolu, passons à autre chose dans la bonne humeur !