1 votos

Clonar un directorio en el terminal, usando ZSH

Estoy tratando de clonar un directorio que contiene un repo git.

es decir, tengo /Users/me/someFolder - someFolder tiene MUCHOS archivos, como más de 250k. También es un repo git, con un .git y muchos otros archivos ocultos.

Además, contiene otros subdirectorios (carpetas).

Entonces, para clonar esto, preservando todos los permisos, copiando recursivamente, e incluyendo TODOS los archivos/directorios en ZSH en Big Sur , lo hago, simplemente lo hago:

cp -a /Users/me/someFolder /Users/me/otherFolder ?

Lo pregunto porque he visto otras sintaxis como:

cp -a /Users/me/someFolder/. /Users/me/otherFolder ? (nota el . ).

Gracias,

2voto

staffan Puntos 3299

El segundo método también funciona si otherFolder ya existe. Aparte de eso, no hay ninguna diferencia (suponiendo que /Users/me/someFolder es una carpeta existente). Con más detalle:

cp -a /Users/me/someFolder /Users/me/otherFolder

Si someFolder es una carpeta (es decir, un directorio - y no un enlace simbólico a un directorio) y otherFolder ya existe (y es un directorio o un enlace simbólico a uno), esto copia /Users/me/someFolder/some/file a /Users/me/otherFolder/someFolder/some/file . Si someFolder es un directorio pero otherFolder no existe, esta copia /Users/me/someFolder/some/file a /Users/me/otherFolder/some/file .

Si someFolder existe pero no es un directorio (es un archivo normal, un enlace simbólico, etc.), se copia en /Users/me/otherFolder/someFolder si otherFolder es un directorio existente o un enlace simbólico a uno, o a /Users/me/someFolder en caso contrario (archivo normal, otro archivo especial o inexistente).

cp -a /Users/me/someFolder/. /Users/me/otherFolder

Si someFolder es un directorio o un enlace simbólico a uno, esto siempre copia /Users/me/someFolder/some/file a /Users/me/otherFolder/some/file independientemente de que otherFolder existía o no. (Excepto si otherFolder es un archivo existente que no es un enlace simbólico o un archivo, en cuyo caso el comando fallará).

En todos los casos, si lo que hay que copiar es un directorio, todo su contenido se copia recursivamente, conservando los permisos y los tiempos de modificación. (Los tiempos de acceso también se conservan, pero se actualizan en el origen). -a opción.

Un comando equivalente es

rsync -a /Users/me/someFolder/ /Users/me/otherFolder

Obsérvese el final de / en la fuente para que /Users/me/someFolder/some/file se copia en /Users/me/otherFolder/some/file . Si la fuente era /Users/me/someFolder se copiará en /Users/me/otherFolder/someFolder .

rsync equivale a cp -R en casos sencillos, pero es más inteligente a la hora de no copiar archivos que ya están presentes en la carpeta de destino, por lo que es bueno para reanudar una copia interrumpida o para hacer copias de seguridad incrementales. Rsync también tiene un montón de opciones para hacer cosas como seleccionar qué archivos copiar.

0voto

bobzsj87 Puntos 121

La primera opción creará algo como /Usuarios/yo/otraCarpeta/algunaCarpeta, mientras que la segunda opción dejará /Usuarios/yo/otraCarpeta con el contenido de algunaCarpeta, pero no con otraCarpeta como subcarpeta.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X