Considérer:
ls -al ../public-back
drwxrwxr-x 4 Apache Apache 4096 Apr 19 03:32 templates
ls -al ../public-back/templates
drwxrwxr-x 2 Apache Apache 4096 Apr 19 03:33 content
drwxrwxr-x 2 Apache Apache 20480 Apr 20 06:14 images
drwxrwxr-x 2 Apache Apache 4096 Apr 19 03:35 video
ls -al /public
drwxrwxr-x 4 Apache Apache 4096 Apr 20 09:49 templates
ls -al /public/templates
drwxrwxr-x 2 Apache Apache 4096 Apr 20 09:50 content
drwxrwxr-x 2 Apache Apache 4096 Apr 20 09:50 images
drwxrwxr-x 2 Apache Apache 4096 Apr 20 09:50 video
Comment déplacer le contenu de /public-back/templates
de manière récursive avec des autorisations dans /public/templates
?
À moins que je ne comprenne mal la question, cela fonctionnerait:
mv /public-back/templates/* /public/templates
De plus, à moins que vous ne disposiez d'une longue liste de fichiers, ajouter -i
vous demandera avant d'écraser quoi que ce soit, ce qui ajoute une certaine sécurité lorsque vous utilisez des caractères génériques comme *
.
La page de manuel de cp indique:
-p same as --preserve=mode,ownership,timestamps
-r same as --recursive=copy directories recursively
Essayer;
cp -rp /public-back/templates/* /public/templates/
Lors du déplacement d’éléments de ma clé USB vers mon système OSMC, j’ai trouvé les informations suivantes très utiles:
find /media/Pi\ Hard\ 16GB/ -name '*' -exec mv -v {} /media/External\ HDD/Videos/ \;
Explication sur la façon dont cela fonctionne ci-dessous.
Au fait, n'oubliez pas d'ajouter une barre oblique inverse avant les espaces dans les noms de répertoire source ou de destination (voir ci-dessus).
find finds all files and folders in the destination path.
/media/Pi Hard 16GB/ is the path searched. Escape special char such as spaces.
-name '*' filters on names. If you do not escape or quote this then
the Shell will expand it before find sees it.
-exec Executes a command, in our case mv
-v Verbose, so you can see what's happening (optional)
{} is replaced by the name of the found object.
Effectivement, vous recherchez tous les fichiers et tous les dossiers et vous les déplacez un par un (ou si un répertoire est trouvé en premier, vous déplacez ce répertoire et son contenu). Cela lance un nouveau processus pour chaque déménagement et est très inefficace. Utilisez-le uniquement lorsque les commandes régulières échouent.
mV ne semble pas faire cela. Mais vous pouvez utiliser ce petit truc, fonctionne comme un charme:
tar cf - . |(cd /targetdir; tar xvf -)
et préserve les autorisations et tous.
Remarque: aucune des solutions ci-dessus n'a fonctionné pour moi, c'est pourquoi cette solution de contournement.
cp -a --link ../public-back/* /public/. && rm -rf ../public-back
Créez donc des liens physiques dans le répertoire de destination et supprimez le répertoire source. 'mv' ne fonctionnera tout simplement pas dans votre cas, et ne fonctionne en général que lorsque les répertoires source et dest n'ont pas de sous-arbres communs.
Notez que je suppose que le mot "déplacer" dans la question signifie que le répertoire source devrait être parti après l'opération.