Bonjour à tous,
Je souhaite utiliser la commande cp sur Linux Mint pour copier une arborescence de dossiers (Disque A) vers un emplacement (Disque B) mais sans les fichiers à l’intérieur et si possible avec une limite de niveau (facultatif),
Cette arborescence est dans une partition Brtfs
j’ai déjà essayé XCOPY sous Windows aprés avoir trouvé un tuto mais vu que j’ai des noms de dossiers de plus de 255 caractères et des caractères spéciaux, j’ai l’erreur « Mémoire insuffisante » qui stoppe la commande.( cette arborescence à été créée sous Linux)
Je voudrais essayer cp mais malgré des recherches sur ses fonctions je n’ai pas trouvé d’informations claires sur la commande que je dois lancer.
J’ai vérifié aussi du coté des Applications mais rien (Teracopy /et autres n’incluent pas cette possibilité)
D’ailleurs si il existe une autre commande Linux me permettant de le faire, ça me va aussi.
Merci
# En juillet ?
Posté par AncalagonTotof . Évalué à 3.
Si on n'était pas en juillet, je dirais qu'on a à faire à un étudiant qui a un devoir à rendre !
Bon, une piste : je le ferais en deux commandes, une pour rechercher les répertoires, l'autre pour les créer, le tout enrobé, boucle pour parer au problème du grand nombre de répertoires, pour arriver à ce qu'on nomme parfois un "one liner". On peut faire sans boucle, mais comme rien n'est magique, on risque de dépasser la limite de paramètres à une commande.
Question aux vieux cons comme moi : à propos de one liner, y'en a qui ont connu les deuxlignes et les GFA-Punch ?…
Message perso : j'en profite si Zoch traîne par ici, lui qui en a écrit une paire de GFA-Punch, tu pourrais donner quelques nouvelles, depuis les 20 - 25 ans qu'on s'est pas vu !
[^] # Re: En juillet ?
Posté par cg . Évalué à 3.
Pour ce genre de cas, connais-tu
xargs -n
?[^] # Re: En juillet ?
Posté par AncalagonTotof . Évalué à 1.
Oui, mais même
xargs
a ses limites il me semble. Honnêtement, ça fait très longtemps que je ne l'ai plus utilisée, je ne me rappelle plus ce qui m'avait rebuté.Il faudra que je lui redonne sa chance !
Ceci dit, je viens de jeter un œil vite fait, et je n'ai pas trouvé la limite en nombre de caractères / paramètres à une commande. Rien du côté de
ulimit
.# Soluce ?
Posté par ni66 . Évalué à 6. Dernière modification le 30 juillet 2023 à 23:31.
Un truc du genre. Pas tester, à adapter au besoin (attention ça peut être violent, faire d’abord sans le exec pour vérifier la liste… et assure toi de comprendre ce que tu fais via la lecture attentive du man)
Ce n’est pas une véritable copie, dans le sens où ça ne conserve pas les droits, les propriétaires, etc. Si ça suffit, tant mieux. Sinon, j’ai bien pensé à rsync (seul?!) ou une combinaison de find et rsync au pire, dans le même esprit, mais va falloir se taper les pages de man…
[^] # Re: Soluce ?
Posté par toffe . Évalué à 3.
Pour copier les permissions vers la nouvelle arborescence. tu peux utiliser getfacl.
A la racine des dossiers à copier:
getfacl -R ./ > sauvegarde_permissions
Puis tu copie le fichier sauvegarde_permissions à la racine de ta nouvelle arboressence et:
setfacl --restore=sauvegarde_permissions 2> /dev/null
[^] # Re: Soluce ?
Posté par jeremyb14 . Évalué à 2.
Merci beaucoup, ce ne sera pas utile pour ce cas ci mais je garde cette commande sous la main
# Rsync
Posté par alberic89 🐧 . Évalué à 4.
rsync
est cité dans une réponse précédente, mais sans plus d'explication. Après la lecture de la page de manuel, voici une commande qui devrait fonctionner :À moins que tu n'aies des fichiers de plus de 8192 Péta-octets sur ton arborescence, ça devrait fonctionner. Ajoute néanmoins l'option
--dry-run
la première fois pour t'assurer que tout ira bien, et après vogue la galère !Il est même possible de bricoler une limite au niveau de récursion avec l'option
--exclude=/*/*/*/etc
en mettant autant de*/
que nécessaire. Un seul ne copiera que le dossier source, deux copieront le dossier source avec ses dossiers, trois avec en plus les sous-dossiers de ses dossiers, etc. Mais la prudence reste de mise, cette option pouvant totalement cafouiller si les fichiers ont des noms contenants des/
.Une deuxième possibilité, plus sûre, mais qui ne permet pas de limiter la récursion est :
Pour vérifier que tout est bien copié, observe la sortie de la commande ou utilise la commande :
L'informatique n'est pas une science exacte, on n'est jamais à l'abri d'un succès
[^] # Re: Rsync
Posté par Maderios . Évalué à 2.
Ne jamais tester tester rsync sans l'option '--dry-run' ou '-n' (effectue un essai sans apporter de modifications). L'option '--verbose' ou '-v' peut être utile
[^] # Re: Rsync
Posté par jeremyb14 . Évalué à 1. Dernière modification le 31 juillet 2023 à 19:03.
Merci pour cette piste, aprés avoir lu les réponses j'en déduit qu'il n'existe pas d'opérateur à cp pour exclure automatiaquement les fichiers dans une copie récursive, ce qui confirme mes recerches.
Je dois dupliquer une arborescence de dossier d'un disque dur de 8TO (plein !), rsync me parait pas mal en effet.
je vais lancer en dry-run pour voir.
merci
[^] # Re: Rsync
Posté par jeremyb14 . Évalué à 4.
PS : j'ai lancé : rsync --recursive --min-size=8192P-1 /media/jeremy/d8ddff72-49c7-4060-a10b-70123c4074d9 /media/jeremy/18dd994c-3e65-47f8-91d6-8dc7cf3b5828/ARCH --verbose --progress --dry-run
Sortie :
sending incremental file list
listing des fichiers puis :
sent 12.986.897 bytes received 62.340 bytes 41.757,56 bytes/sec
total size is 7.897.021.415.775 speedup is 605.171,12 (DRY RUN)
j'ai relancé en réel et c'est bon, les 20 000 dossiers de l'arborescence ont été copiés en 3s ! puissant ce Rsync
le Topic est clos, merci encore pour votre réactivité.
# find + pax
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 3. Dernière modification le 01 août 2023 à 14:57.
On peut trouver les répertoires avec
find -type d
. Etpax
, qui est un outil qui se veut unificateur detar
etcpio
, dispose d'un mode où il ne crée pas d'archive, ne lit pas d'archive, n'extrait pas d'archive mais copie des fichiers. Et quand on ne lui donne pas de liste de ces fichiers, il la prend sur son entrée standard. Je vous laisse coller les morceaux.Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.