Una buena costumbre antes de modificar un archivo consiste en hacer una copia de seguridad. De esta forma, si la modificación que vayamos a hacer no es correcta y no nos permite arrancar de nuevo el programa o el sistema, siempre podemos volver a usar el archivo de configuración original.
Sin embargo, a veces no realizamos la copia de seguridad porque nos da pereza tener que escribir dos veces la ruta del archivo (si usamos rutas absolutas) o el nombre del archivo (si usamos rutas relativas). Pues bien, esto tiene fácil arreglo con el siguiente comando:
cp /rutacompleta/archivo{,.original}
Este comando realiza una copia del archivo de forma muy rápida usando la expansión de llaves (brace expansion) que nos permite crear cadenas arbitrarias. En este caso el comando anterior expandido sería equivalente al siguiente:
cp /rutacompleta/archivo
/rutacompleta/archivo
.original
Por lo que supone un ahorro considerable de texto a escribir y/o de tiempo.
¡Ojo! No hay ni se puede dejar un espacio en blanco entre el nombre del archivo y la primera llave.
A continuación vamos a exponer algunos ejemplos reales de uso:
- Hacer una copia del archivo /etc/hostname a /etc/hostname.original:
sudo cp /etc/hostname{,.original}
- Hacer una copia del archivo /etc/apt/sources.list a /etc/apt/sources.list.bak:
sudo cp /etc/apt/sources.list{,.bak}
- Hacer una copia del archivo Documentos/Articulos/Ubuntu a Documentos/Articulos/Ubuntu.antiguo:
cp Documentos/Articulos/Ubuntu{,.antiguo}
Espero que os resulte tan útil como a mi.
Fuente: commanlinefu
Pues si la verdad a mi me resulta muy util debido a que siempre debo actualizar uno que otro archivo y si, la verdad da pereza escribir tanto jaja
¿Estupendo! Gracias por el truco.
muchas gracias por toda la info que ponen en línea para sobre todo por personas que como yo vamos comenzando con el linux.
muchas gracias !!!
me sirvio muchisimo pero necesito una explicacion de como hacer copias de seguridad a archivos de un usuario determinado, en un tiempo determinado y que las copias sean guardadas con las fecha y nombre del usuario, ademas estas copias deben ser guardadas comprimidas. gracias por lo que me puedan resolver.
Hola y gracias:
No conocía esa forma de utilizar cp, es muy elegante.
Les tengo un dato para hacer backups donde se indique la fecha y la hora:
echo -e ‘\n# Backup Function\nbkp () { cp -p «$@»{,.bkp.$(date +%F_%R)}; }’ >> ~/.bashrc; source ~/.bashrc
pones esa linea en tu prompt y listo.
Usas cp con la variable date y creas la función bkp en el .bashrc del usuario. Después la usas así:
bkp /rutacompleta/archivo
y el resultado es un nuevo archivo:
/rutacompleta/archivo.bkp.año-mes-dia_hora:minuto
Ojalá les sirva, yo lo uso muy a menudo, sobre todo cuando quiero cambiar algún archivo de configuración.-
Saludos
@vimora
Muchas gracias por la información. Tiene muy buena pinta. En cuanto tenga un rato lo pruebo.
Saludos :-D
Hice una nueva versión, que puede copiar directorios al agregarle un -r al cp, eso si, hay que tener cuidado que el nombre del directorio no lleve el slash al final:
echo -e ‘\n# Backup Function\nbkp () { cp -rp “$@”{,.bkp.$(date +%F_%R)}; }’ >> ~/.bashrc; source ~/.bashrc
Modo de uso:
bkp /rutacompleta/archivo
bkp /rutacompleta/directorio