Tabla de contenidos
Se describen las herramientas y operaciones para la gestión de información en formato binarios y texto.
![]() |
Aviso |
---|---|
El acceso de escritura sin coordinación a los dispositivos disponibles y a
los archivos desde varios procesos no debe realizarse sin evitar la condición de carrera. Para evitarla se puede
utilizar el mecanismo de bloqueo del archivo
(file locking) |
La seguridad de la información y el control de su compartición tiene varios aspectos.
La creación de un repositorio de información
El acceso al almacenamiento remoto
La duplicación
El seguimiento del histórico de modificaciones
Las facilidades de la compartición de la información
Evitar el acceso no autorizado a archivos
La detección de modificaciones no autorizadas de archivos
Esto se puede llevar a cabo por la combinación de algunas herramientas.
Herramientas de repositorios y compresión
Herramientas de sincronización y copia
Sistemas de archivos en red
Medios de almacenamiento extraibles
El intérprete de órdenes seguro
El sistema de autenticación
Herramientas de sistemas de control de versiones
Herramientas de criptográficas de cifrado y resumen
Aquí esta un resumen de las herramientas de repositorio y compresión disponibles en un sistema Debian.
Tabla 10.1. Relación de las herramientas de repositorios y compresión
paquete | popularidad | tamaño | extensión | orden | comentario |
---|---|---|---|---|---|
tar
|
V:920, I:999 | 3144 | .tar |
tar (1) |
el archivador estándar (estándar de facto) |
cpio
|
V:416, I:998 | 1141 | .cpio |
cpio (1) |
Archivador estilo Unix System V, utilizado con find (1) |
binutils
|
V:160, I:642 | 109 | .ar |
ar (1) |
archivador para la creación de bibliotecas estáticas |
fastjar
|
V:1, I:19 | 183 | .jar |
fastjar (1) |
archivador para Java (similar a zip) |
pax
|
V:10, I:18 | 170 | .pax |
pax (1) |
nuevo archivador estándar POSIX, comprometido entre tar y
cpio |
gzip
|
V:882, I:999 | 252 | .gz |
gzip (1), zcat (1), … |
Utilidad de compresión GNU LZ77 (estándar de facto) |
bzip2
|
V:161, I:970 | 121 | .bz2 |
bzip2 (1), bzcat (1), … |
La utilidad de compresión
por ordenamiento de bloques Burrows-Wheeler tiene el índice de
compresión mayor que gzip (1) (más lento que
gzip con una sintáxis similar) |
lzma
|
V:1, I:20 | 149 | .lzma |
lzma (1) |
LZMA compression utility with higher compression
ratio than gzip (1) (deprecated) |
xz-utils
|
V:432, I:979 | 1216 | .xz |
xz (1), xzdec (1), … |
La utilidad de compresión XZ tiene un índice de
compresión mayor que bzip2 (1) (más lento que
gzip pero más rápdio que bzip2 ; es el
sustituyo del la utilidad de compresión LZMA) |
zstd
|
V:34, I:91 | 2027 | .zstd |
zstd (1), zstdcat (1), … |
Zstandard fast lossless compression utility |
p7zip
|
V:111, I:454 | 987 | .7z |
7zr (1), p7zip (1) |
El archivador de archivos 7-Zip tiene el alto índice de compresión (compresión LZMA) |
p7zip-full
|
V:116, I:460 | 4664 | .7z |
7z (1), 7za (1) |
El archivador de archivos 7-Zip tiene un alto nivel de compresión (compresión LZMA y otros) |
lzop
|
V:13, I:133 | 164 | .lzo |
lzop (1) |
La utilidad de compresión LZO tiene una velocidad
de compresión y descompresión más alta que gzip (1) (menor
índice de compresión que gzip con una sintáxis parecida) |
zip
|
V:47, I:398 | 623 | .zip |
zip (1) |
InfoZIP: herramienta de archivo y compresión DOS |
unzip
|
V:100, I:772 | 385 | .zip |
unzip (1) |
InfoZIP: herramienta de desarchivo y descompresión DOS |
![]() |
Aviso |
---|---|
No asigne la variable « |
Cuando se realiza una compresiñon gzip de un archivo
tar
(1) se utiliza la extensión de archivo
«.tgz
» o «.tar.gz
».
La compresión xz de un archivo tar
(1) utiliza la
extensión de archivo «.txz
» o
«.tar.xz
».
Los métodos de compresión más populares entre las herramientas FOSS como tar
(1) ha evolucionado
como se muestra: gzip
→ bzip2
→
xz
cp
(1), scp
(1) y
tar
(1) puede tener alguna limitación con archivos
especiales. Cpio
(1) es más versátil.
cpio
(1) esta diseñado para ser utilizado con
find
(1) y otras órdenes y archivos de órdenes para la
creación de copias de respaldo ya que la parte de selección de archivo del
archivo de órdenes puede ser probado de forma independiente.
La estructura interna de los archivos de información de Libreoffice son
archivos «.jar
» los cuales pueden incluso abrirse con
unzip
.
La herramienta de archivo multiplataforma de-facto es
zip
. Para conseguir la máxima compatibilidad utilicela
mediante «zip -rX
». Si el tamaño del fichero es
importante añada también la opción «-s
».
Aquí hay un resumen de las herramientas de copia y respaldo disponibles en el sistema Debian.
Tabla 10.2. Relación de las herramientas de copia y sincronización
paquete | popularidad | tamaño | herramienta | función |
---|---|---|---|---|
coreutils
|
V:908, I:999 | 18062 | GNU cp | copia archivos y directorios localmente («-a« para hacerlo recursivo) |
openssh-client
|
V:856, I:997 | 5609 | scp | copia archivos y directorios de forma remota (cliente,
-r » para hacerlo recursivo) |
openssh-server
|
V:740, I:841 | 1867 | sshd | copia archivos y directorios de forma remota (servidor remoto) |
rsync
|
V:285, I:567 | 776 | sincronización y respaldo remoto en un sentido | |
unison
|
V:3, I:15 | 14 | sincronización y respaldo remoto en dos direcciones |
La copia de archivos con rsync
(8) aporta muchas más
funcionalidades que otros.
el algorimo de transferencia delta envia únicamente las diferencias entre los archivos de origen y los archivos que hay en el destino
el algoritmo de comprobación rápido (quick check algorithm) (por omisión) busca los archivos que han cambiado su tamaño o su fecha de última modificación
las opciones «--exclude
» y
«--exclude-from
» son parecidas a las de
tar
(1)
la sintáxis de «una barra «/« en el directorio origen« evita la creación de un nivel de directorios adicional en el destino
![]() |
Sugerencia |
---|---|
Las herramientas de sistemas de control de versiones (VCS) en Tabla 10.14, “List of other version control system tools” pueden operar como herramientas de sincronización y copia en múltiples sentidos. |
Aquí estan algunas manreas de archivar y desarchivar el contenido entero de
un directorio «./origen
» utilizando diferentes
herramientas.
GNU tar
(1):
$ tar -cvJf archive.tar.xz ./source $ tar -xvJf archive.tar.xz
Otra forma es como se muestra.
$ find ./source -xdev -print0 | tar -cvJf archive.tar.xz --null -F -
cpio
(1):
$ find ./source -xdev -print0 | cpio -ov --null > archive.cpio; xz archive.cpio $ zcat archive.cpio.xz | cpio -i
Aquí están diferentes maneras de copiar el contenido completo de un
directotio «./origen
» utilizando diferentes herramientas.
Copia local: directorio «./origen
» → directorio
«/destino
»
Copia remota: directorio «./origen
» en el equipo local →
directorio «/destino
» en el equipo
«usuario@equipo.dom
»
rsync
(8):
# cd ./source; rsync -aHAXSv . /dest # cd ./source; rsync -aHAXSv . user@host.dom:/dest
Puede utilizar la sintáxis de «barra «/« en el directorio origen«.
# rsync -aHAXSv ./source/ /dest # rsync -aHAXSv ./source/ user@host.dom:/dest
Otra forma es como se muestra.
# cd ./source; find . -print0 | rsync -aHAXSv0 --files-from=- . /dest # cd ./source; find . -print0 | rsync -aHAXSv0 --files-from=- . user@host.dom:/dest
cp
(1) de GNU y scp
(1) de openSSH:
# cd ./source; cp -a . /dest # cd ./source; scp -pr . user@host.dom:/dest
GNU tar
(1):
# (cd ./source && tar cf - . ) | (cd /dest && tar xvfp - ) # (cd ./source && tar cf - . ) | ssh user@host.dom '(cd /dest && tar xvfp - )'
cpio
(1):
# cd ./source; find . -print0 | cpio -pvdm --null --sparse /dest
Puede sustituir «.
» por «foo
» para
todos los ejemplos que contienen «.
» para copiar archivos
desde el directorio «./origen/foo
» al directorio
«/destino/foo
».
Puede sustituir «.
» por la ruta absoluta
«/ruta/al/origen/foo
» para todos los ejemplos que
contienen «.
» para eliminar «cd
./source;
». La copia de estos archivos a diferentes ubicaciones
depende de las herramientas utilizadas como se muestra.
«/destino/foo
»: rsync
(8), GNU
cp
(1) y scp
(1)
«/destino/ruta/al/origen/foo
»: GNU
tar
(1) y cpio
(1)
![]() |
Sugerencia |
---|---|
|
La orden find
(1) es utilizada para la selección de
archivos en combinación con las órdenes de archivado y copia (consulte Sección 10.1.3, “Formas de archivado” and Sección 10.1.4, “Formas de copia”) o por xargs
(1)
(consulte Sección 9.4.9, “Repetición de una orden sobre archivos”). Esto
se puede mejorar con la utilización de los parámetros de la orden.
La sintáxis básica de find
(1) se puede resumir en lo que
se muestra.
los parámetros condicionales son evaluados de izquierda a derecha
Esta evaluación se para una vez que se ha determinado la salida.
El «O lógico« (que se escribe
«-o
» entre condiciones) tiene menor precedencia que el
«Y lógico« (que se escribe
«-a
» o vacio entre condiciones).
El «NO lógico« (que se escribe
«!
» antes de la condición) tiene mayor precedencia que el
«Y lógico«.
La expresión «-prune
» devuelve siempre un VERDADERO lógico y, si es un directorio, la
búsqueda del archivos es detenida al llegar a este punto.
La expresión «-name
» encaja con los nombres de archivos
con el mismo tipo de expresiones regulares que se usan en el intérprete de
órdenes (glob) (consulte Sección 1.5.6, “Expansión de un patrón en el intérprete de órdenes”) pero también encaja
su «.
» inicial con metacaracteres como
«*
» y «?
». (Nueva funcionalidad de
POSIX)
La expresión «-regex
» encaja con rutas absolutas al
estilo de emacs BRE (consulte Sección 1.6.2, “Expresiones regulares”) por defecto.
La expresión «-size
» encaja con los archivos en base a su
tamaño (el valor precedido de «+
» para mayor y precedido
de «-
» para menor)
La expresión «-newer
» encaja con archivos más recientes
que el que consta como parámetro.
La expresión «-print0
» devuelve siempre un VERDADERO lógico e imprimet el nombre de archivo
completo (finalizado con un null) por
la salida estándar..
La orden find
(1) se utiliza frecuentemente con el estilo
que se muestra a continuación.
# find /path/to \ -xdev -regextype posix-extended \ -type f -regex ".*\.cpio|.*~" -prune -o \ -type d -regex ".*/\.git" -prune -o \ -type f -size +99M -prune -o \ -type f -newer /path/to/timestamp -print0
Lo que se traduce en las acciones siguientes.
Busca todo los archivos que comienzan con «/ruta/a
»
Limita la búsqueda globalmente al comienzo de su sistema de archivos y en su lugar utiliza ERE (consulte Sección 1.6.2, “Expresiones regulares”)
Excluye los archivos que encajan con las expresiones regulares
«.*\.cpio
» o «.*~
» de la búsqueda sin
procesarlos
Excluye los directorios que encajan con la expresión regular de
«.*/\.git
» de la búsqueda sin procesarlas
Excluye los archivos cuyo tamaño es mayor de 99 Megabytes (en bytes 1048576 ) de la búsqueda sin procesarla
Impreme los nombres de los archivos que cumplen los criterios de búsqueda
anterirores y son más nuevos que el
«/ruta/al/sellodetiempo
»
Tenga el cuenta la forma en que se utiliza «-prune
-o
»para excluir los archvios en los ejemplos anteriores.
![]() |
Nota |
---|---|
Para sistemas no Debian tipo Unix, algunas
opciones de |
Cuando elija los medios de almacenamiento de información para el archivo de información importante, debe tener cuidado con sus limitaciones. Para el respaldo de pequeñas cantidades de información personal, yo utilizo CD-R y DVD-R de una compañia conocida y los almaceno en un lugar fresco, sin luz, seco y limpio. (El medio de archivo en cinta parece una opción común en entornos profesionales).
![]() |
Nota |
---|---|
Un lugar resistente al fuegoA fire-resistant safe tiene sentido para documentos en papel. La mayor parte de los medios de almacenamiento de información tienen menor tolerancia a la temperatura que el papel. Yo normalmente mantengo almacenadas varias copias cifradas en diferentes ubicaciones seguras. |
Tiempo de vida optimista de los medios de archivo (la mayor parte proveniente de los proveedores del medio).
Más de 100 años: papel libre de ácido con tinta
100 años : almacenamiento óptico (CD/DVD, CD/DVD-R)
30 años: almacenamiento magnético (cinta, diquete)
20 años: almacenamiento óptico con cambio de fase (CD-RW)
Esto no tiene en cuenta los errores mecánicos debido al manejo etc.
Ciclo de escritura de medios de archivos optimista visto en internet (proveniente de la información aportada por el vendedor).
Más de 250,000 ciclos : discos duros
Más de 10,000 ciclos : memoria flash
1,000 ciclos : CD/DVD-RW
1 ciclo : CD/DVD-R, papel
![]() |
Atención |
---|---|
Los datos que vida de los medios de almacenamiento y de los ciclos de escritura que hemos comentado no deben ser tenidos en cuenta para la toma de decisiones sobre almacenamiento de datos críticos. Por favor, consulte la informaciń especifica del producto que proporciona el fabricante. |
![]() |
Sugerencia |
---|---|
Ya que los CD/DVD-R y el papel tienen únicamente un ciclo de escritura, impide de informa intrínseca la pérdida de datos por sobreescritura. ¡Esto es una ventaja! |
![]() |
Sugerencia |
---|---|
Si necesita copias de respaldo rápidas, frecuentes y de grandes cantidades de información, un disco duro en un equipo remoto sonre una conexión de red rápida, puede ser la única opción real. |
Un dispositivo de almacenamiento extraible puede pertenecer a uno de los siguientes tipos:
Cámara digital
reproductor digital de música
Pueden ser conectados mediante:
Los entornos de escritorio modernos como GNOME y KDE pueden montar
automaticamente estos dispositivos extraibles sin su entrada correspondiente
en «/etc/fstab
».
![]() |
Sugerencia |
---|---|
Los dispositivos que se montan de forma automática pueden tener la opción de
montaje « |
![]() |
Sugerencia |
---|---|
En los entornos de escritorio modernos el automontaje ocurre unicamente
cuando el dispositivo no posee una entrada en
« |
Mount point under modern desktop environment is chosen as
"/media/username/disk_label
" which
can be customized by the following.
mlabel
(1) para el sistema de archivos FAT
genisoimage
(1) con la opción «-V
» para
el sistema de archivos ISO9660
tune2fs
(1) con la opción «-L
» para los
sistemas de archivos ext2/ext3/ext4
![]() |
Sugerencia |
---|---|
Puede que necesite proporcionar el tipo de codificación como una opción a la hora del montaje (consulte Sección 8.1.3, “Códificación del nombre del archivo”). |
![]() |
Sugerencia |
---|---|
Si utiliza el menú del interfaz gráfico de usuario para desmontar un sistema
de archivos puede eliminar su nodo de dispositivo generado dinámicamente
como « |
Cuando comparte información con otro sistema por medio de un dispositivo de almacenamiento extraible, podría formatearlo en un sistema de archivos que tenga soporte en ambos sistemas. Aquí esta una relación de posibles candidatos.
Tabla 10.3. Relación de posibles sistemas de archivos para dispositivos de almacenamiento extrabiles con sus casos de uso normales
filesystem name | typical usage scenario |
---|---|
FAT12 | compartición de información entre diferentes platadormas mediante disquete (<32MiB) |
FAT16 | compartición de información entre plataformas con el uso de dispositivos como pequeños discos duros (<2GiB) |
FAT32 | compartición de información entre plaformas mediante dispositivos como un gran disco duro (<8TiB, soportados por MS Windows95 OSR2 y posteriores) |
exFAT | cross platform sharing of data on the large hard disk like device (<512TiB, supported by WindowsXP, Mac OS X Snow Leopard 10.6.5, and Linux kernel since 5.4 release) |
NTFS | compartición de información entre platadormas mediante un dispositivo como un gran disco duro (soporte nativo en MS Windows NT y versiones posteriores y soportdado porNTFS-3G por medio de FUSE en Linux) |
ISO9660 | compartición de información entre plataformas de datos no volátiles en CD-R y DVD+/-R |
UDF | escritura incremental de información en CD-R y DVD+/+R (nuevo) |
MINIX | almacenamiento de información en archivos unix eficiente en disquete |
ext2 | almacenamiento de información en dispositivos como discos duro para sistemas Linux antiguos |
ext3 | almacenamiento de información en dispositivos como discos duro para sistemas Linux antiguos |
ext4 | compartición de datos en un dispositivo com oun disco duro para sistemas Linux actuales |
btrfs | sharing of data on the hard disk like device with current Linux systems with read-only snapshots |
![]() |
Sugerencia |
---|---|
Consulte Sección 9.9.1, “Cifrado de discos externos con dm-crypt/LUKS” para la compartición de información entre plataformas utilizando cifrado a nivel de dispositivo. |
El sistema de archivos FAT esta soportado por casit todos los sistemas operativos modernos y es bastante útil para el intercambio de información por medio de un disco duro externo.
Cuando se formatea un disco duro externo con el sistemas de archivos FAT para compartir información entre diferentes platadormas, lo siguiente podrían ser las opciones más seguras.
Particionemoslos con fdisk
(8),
cfdisk
(8) or parted
(8) (consulte Sección 9.6.2, “Configuración del particionado de disco”) en una única partición primaria y
marquemosla como se muestra.
Tipo «6« para FAT15 para dispositivos menores de 2 GB.
Tipo «c« para FAT32 (LBA) para dispositivos grandes.
Formateemos la partición primaria con mkfs.vfat
(8) como
se muestra.
Si el nombre del dispositivo fuera, p. ej. «/dev/sda1
»
para FAT16
La opción explícita para FAT32 y su nombre de dispositivo,
p.ej. «-F 32 /dev/sda1
»
Cuando se utilizan los sistemas de archivos FAT o ISO9660 para compartición de información tenga en cuenta las consideraciones siguientes:
El archivo de archivos se recomienda utilizar primero
tar
(1), o cpio
(1) par mantener los
nombres de archivos largos, los enlaces blandos, los permisos originales de
Unix y la información del propietario.
Para protegerlo de las limitaciones de tamaño divida el archivo en trozos
menores de 2GiB con la orden split
(1).
Cifre el archivo para asegurar que no existirán accesos no autorizados.
![]() |
Nota |
---|---|
En sistemas de archivos FAT debido a su diseño, el tamaño máximo de un
archivo es |
![]() |
Nota |
---|---|
La propia compañia Microsoft no recomienda el uso de FAT para dispostivos o particiones menores de 200 MB. Microsoft resalta en su «Visión de conjunto de los sistemas de archivos FAT, HPFS y NTFS« su uso ineficiente del espacio de disco. Sin duda en Linux habitualmente usaremos el sistema de archivos ext4. |
![]() |
Sugerencia |
---|---|
Para más información acerca de sistemas de archivos y su uso, por favor lea «Cómo Sistemas de Archivos«. |
Para compartir información con otros sistemas a través de internet, debería utilizar un servicio común. Aquí estan algunas pistas.
Tabla 10.4. Relación de los servicios de red disponibles con el escenario típico de utilización
servicio de red | descripción del caso de uso normal |
---|---|
SMB/CIFS sistema de archivos en red montado con Samba | compartición de archivos por medio de«Microsoft Windows Network«, consulte
smb.conf (5) y Cómo Oficial y Guía de Referencia
de 3.x.x o el paquete samba-doc |
Sistema de archivos montado NFS con el núcleo de Linux | compatición de archivos mediante una «Red Unix/Linux«, consulte
exports (5) y Linux
NFS-HOWTO |
servicio HTTP | compartición de archivos entre cliente/servidor web |
servicio HTTPS | compartición de archivos entre servidor web/cliente con cifrado con «Secure Sockets Layer« (SSL) o «Transport Layer Security« (TLS) |
servicio FTP | compartición de archivos entre servidor FTP/cliente |
Aunque los sistemas de archivos montados a través de la red pueden ser útiles, estos pueden ser inseguros. Sus conexiones de red deben securizarse como se muestra.
Consulte además Sección 6.5, “Servidores de aplicaciones en otras redes” y Sección 6.6, “Otros clientes de aplicaciones de red”.
Todos sabemos que los equipos fallan algunas veces o los errores humanos producen daños en el sistema o la información. Las operaciones de copia de seguridad y respaldo son una parte esencial de la administración de sistemas. Todos los errores posible ocurrirán alguna vez.
![]() |
Sugerencia |
---|---|
Mantenga su sistema de respaldo simple y cree copias de seguridad con frecuencia. El hecho de tener copias de seguridad de la información es más importante que la forma en las que las realice. |
Existen tres factores que determinan la directriz de copia de seguridad y recuperación real.
Saber lo qué hay que respaldar y recuperar.
Los archivos creados por usted: información en «~/
»
Archivos de información creados por las aplicaciones que utiliza: la
información en «/var/
» (excepto
«/var/cache/
», «/var/run/
» y
«/var/tmp/
»)
Archivos de configuración del sistema: información en
«/etc/
»
Local programs: data in "/usr/local/
" or
"/opt/
"
Información de la instalación del sistema: un resumen en texto plano de los pasos fundamentales (particionado, ...)
Probar el conjunto de datos: confirmarlo mediante la ejecución de operaciones de recuperación
Cron job as a user process: files in
"/var/spool/cron/crontabs
" directory and restart
cron
(8). See Sección 9.4.14, “Planificación regular de tareas” for cron
(8) and
crontab
(1).
Systemd timer jobs as user processes: files in
"~/.config/systemd/user
" directory. See
systemd.timer
(5) and
systemd.service
(5).
Autostart jobs as user processes: files in
"~/.config/autostart
" directory. See Desktop Application Autostart
Specification.
Saber como respaldar y recuperar datos.
Seguridad de la información almacenada: protegerlo de la sobreescritura y del fallo del sistema
Frecuencia de respaldo: planficación del respaldo
Redundancia de respaldo: copias de la información
Proceso a prueba de fallos: una única y sencilla orden para crear la copia de respaldo
Evaluación de riesgos y costes implícitos.
Risk of data when lost
Data should be at least on different disk partitions preferably on different disks and machines to withstand the filesystem corruption. Important data are best stored on a read-only filesystem. [4]
Risk of data when breached
Sensitive identity data such as
"/etc/ssh/ssh_host_*_key
",
"~/.gnupg/*
", "~/.ssh/*
",
"~/.local/share/keyrings/*
",
"/etc/passwd
", "/etc/shadow
",
"popularity-contest.conf
",
"/etc/ppp/pap-secrets
", and
"/etc/exim4/passwd.client
" should be backed up as
encrypted. [5] (See Sección 9.9, “Trucos para cifrar información”.)
Never hard code system login password nor decryption passphrase in any script even on any trusted system. (See Sección 10.3.6, “Password keyring”.)
Modo de error en la recuperación y sus posibilidades
Hardware (especially HDD) will break
Filesystem may be corrupted and data in it may be lost
Remote storage system can't be trusted for security breaches
Weak password protection can be easily compromised
File permission system may be compromised
Uso de recursos para el respaldo: humanos, hardware, software, …
Automatic scheduled backup with cron job or systemd timer job
![]() |
Nota |
---|---|
No respalde el contenido de los pseudo sistemas de archivos ubicados en
|
![]() |
Nota |
---|---|
Puee que quiera para algunos demonios como MTA (consulte Sección 6.2.4, “Agente de transporte de correo (Mail transport agent, MTA)”) mientras respalda su información. |
Aquí estan una relación con las suites de copias de seguridad más importantes en un sistema Debian.
Tabla 10.5. Relación de suites de utilidades de copias de respaldo
paquete | popularidad | tamaño | descripción |
---|---|---|---|
dump
|
V:1, I:5 | 351 | 4.4 BSD dump (8) y
restore (8) para sistemas de archivos ext2/ext3/ext4 |
xfsdump
|
V:0, I:8 | 848 | dump y restore con xfsdump (8) y
xfsrestore (8) para XFS
sistemas de archivos en GNU/Linux e IRIX |
backupninja
|
V:3, I:4 | 367 | sistema meta-backup extensible y ligero |
bacula-common
|
V:10, I:12 | 2120 | Bacula: copia de respaldo en red, recuperación y verificación - archivos de apoyo comunes |
bacula-client
|
I:3 | 183 | Bacula: copia de seguridad en red, recuperación y verificación - metapaquete cliente |
bacula-console
|
V:0, I:4 | 104 | Bacula: copia de seguridad en red, recuperación y verificación - consola de texto |
bacula-server
|
I:1 | 183 | Bacula: copia de seguridad en red, recuperación y verificación - metapaquete del servidor |
amanda-common
|
V:0, I:2 | 9937 | Amanda: Archivador Automático de Discos en Red Avanzado Maryland (Bibliotecas) |
amanda-client
|
V:0, I:2 | 1085 | Amanda: Archivador Automático de Discos en Red Avanzado Maryland (Cliente) |
amanda-server
|
V:0, I:0 | 1077 | Amanda: Archivador Automático de Discos en Red Avanzado Maryland (Servidor) |
backup-manager
|
V:0, I:1 | 571 | herramienta de copia de seguridad en línea de órdenes |
backup2l
|
V:0, I:0 | 115 | herramienta para medios externos para su copia/restauración con bajo mantenimiento (basado en discos) |
backuppc
|
V:2, I:2 | 3178 | BackupPC sistema de copia de respadlo de PCs( basado en disco) de alto rendimiento y ámbito empresarial |
duplicity
|
V:19, I:40 | 1859 | respaldo incremental (remoto) |
flexbackup
|
V:0, I:0 | 243 | respaldo incremental (remoto) |
rdiff-backup
|
V:5, I:12 | 1162 | respaldo incremental (remoto) |
restic
|
V:2, I:5 | 21593 | respaldo incremental (remoto) |
slbackup
|
V:0, I:0 | 151 | respaldo incremental (remoto) |
Las herramientas de copias de seguridad están especializadas en diferentes aspectos.
Mondo Rescue es un sistema de copias de seguridad centrado en realizar la restauración completa de un sistema rapidamente desde una copia en CD/DVD etc. sin seguir el proceso normal de instalación del sistema.
Bacula, Amanda, and BackupPC son suites de utilidades de copia de respaldo con funcionalidad completa centradas en la copias de seguridad regulars a través de la red.
Regular backups of user data can be realized by a simple script (Sección 10.2.3, “Personal backup”).
Las herramientas básicas detalladas en Sección 10.1.1, “Herramientas de repositorios y compresión” and Sección 10.1.2, “Herramientas de sincronización y copia” pueden ser utilizadas para permiteir la copias de seguridad del sistema por medio de archivos de órdenes personalizados. Estos archivos de órdenes pueden ser mejorados como se muestra.
El paquete restic
permite las copias de seguridad
incrementales (en remoto).
El paquete rdiff-backup
permite las copias de seguridad
incrementales (en remoto).
El paquete dump
ayuda en el archivo y restauración
incremental del sistema de archivos completo de forma incremental y
eficiente.
![]() |
Sugerencia |
---|---|
Consulte los archivos en « |
For a personal Debian desktop system running testing
suite, I only need to protect personal and critical data. I reinstall
system once a year anyway. Thus I see no reason to backup the whole system
or to install a full featured backup utility.
At the same time, it is very valuable to have frequent recent snapshots of personal data and system configuration, and occasional full backups of personal data.
I usually make these snapshots and backups with a simple shell script bss. This script is a short shell which uses standard
utilities: btrfs subvolume snapshot
,
rsync
. For data encryption, disk image is created by
fallocate
(1) and configured with
cryptsetup
(8).
![]() |
Sugerencia |
---|---|
Puede recuperar la información de configuración de con
« |
La infraestructura de seguridad de la información es una combinación de herramientas de cifrado de datos, herramientas de resúmenes de mensajes y herramientas de firma.
Tabla 10.6. Relación de herramientas de infraestructura de seguridad de la información
paquete | popularidad | tamaño | orden | descripción |
---|---|---|---|---|
gnupg
|
V:551, I:918 | 885 | gpg (1) |
GNU Privacy Guard - herramienta de firma y cifrado OpenPGP |
gpgv
|
V:897, I:999 | 917 | gpgv (1) |
GNU Privacy Guard - herramienta de verificación de firma |
paperkey
|
V:1, I:13 | 58 | paperkey (1) |
extracción únicamente de la información secreta sin considerar las claves secretas OpenPGP |
cryptsetup
|
V:30, I:77 | 406 | cryptsetup (8), … |
utilities for dm-crypt block device encryption supporting LUKS |
coreutils
|
V:908, I:999 | 18062 | md5sum (1) |
crea y comprueba el resúmen MD5 de un mensaje |
coreutils
|
V:908, I:999 | 18062 | sha1sum (1) |
crea y comprueba el resumen SHA1 de un mensaje |
openssl
|
V:841, I:995 | 2269 | openssl (1ssl) |
crea el resumen de un mensaje con «openssl dgst »
(OpenSSL) |
libsecret-tools
|
V:1, I:12 | 44 | secret-tool (1) |
store and retrieve passwords (CLI) |
seahorse
|
V:72, I:248 | 7987 | seahorse (1) |
key management tool (GNOME) |
See Sección 9.9, “Trucos para cifrar información” on dm-crypt and fscrypt which implement automatic data encryption infrastructure via Linux kernel modules.
Aquí están las órdenes GNU Privacy Guard para la gestión básica de claves.
Tabla 10.7. Relación de las órdenes GNU Privacy Guard par la gestión de claves
orden | descripción |
---|---|
gpg --gen-key |
genera una nueva clave |
gpg --gen-revoke mi_Id_de_usuario |
provoca la revocación de la clave para mi_ID_de_usuario |
gpg --edit-key ID_de_usuario |
edición interactiva de la clave, «help« para obtener ayuda |
gpg -o archivo --export |
exporta todas las claves a un archivo |
gpg --import archivo |
importa todas las claves desde un archivo |
gpg --send-keys ID_usuario |
envia la clave de un ID_de_usuario al servidor de claves |
gpg --recv-keys ID_de_usuario |
recibe claves del usuario ID_de_usuario desde el servidor de claves |
gpg --list-keys ID_de_usuario |
relación de las claves de ID_de_usuario |
gpg --list-sigs ID_de_usuario |
relación de las firmas de ID_de_usuarios |
gpg --check-sigs ID_de_usuario |
comprueba la firma de ID_de_usuario |
gpg --fingerprint ID_de_usuario |
comprueba la huella del ID_de_usuario |
gpg --refresh-keys |
actualiza el círculo de claves local |
Aquí esta el significado de un código seguro.
Tabla 10.8. Relación del significado del código de confianza
código | descripción de la confianza |
---|---|
- |
sin asignación del dueño de la confianza /no calculado todavía |
e |
cálculo de confianza fallido |
q |
falta de información suficiente para el cálculo |
n |
no confie nunca en esta clave |
m |
confianza marginal |
f |
confianza total |
u |
confianza básica |
Lo siguiente carga mi clave «1DD8D791
» a un popular
servidor de claves «hkp://keys.gnupg.net
».
$ gpg --keyserver hkp://keys.gnupg.net --send-keys 1DD8D791
Un buen servidor de claves por defecto configurado en
«~/.gnupg/gpg.conf
» (o su ubicación antigua
«~/.gnupg/options
») contiene lo siguiente.
keyserver hkp://keys.gnupg.net
Lo siguiente obtiene las claves desconocidas del servidor de claves.
$ gpg --list-sigs --with-colons | grep '^sig.*\[User ID not found\]' |\ cut -d ':' -f 5| sort | uniq | xargs gpg --recv-keys
Existió un error en el Servidor de
Claves Públicas OpenPGP (pre versión 0.9.6) el cual corrompia las
claves con más de dos subclaves. El nuevo paquete gnupg
(>1.2.1-2) pueden gestionar estas subclaves corruptas. Consulte
gpg
(1) bajo la opción
«--repair-pks-subkey-bug
».
Aquí estan los ejemplos de utilización de las órdenes GNU Privacy Guard sobre archivos.
Tabla 10.9. Relación de órdenes GNU Privacy Guard sobre archivos
orden | descripción |
---|---|
gpg -a -s archivo |
archivo de firma en ASCII del archivo.asc blindado |
gpg --armor --sign archivo |
, , |
gpg --clearsign archivo |
mensaje sin firmar |
gpg --clearsign archivo|mail foo@example.org |
envia un mensaje de correo sin firmar a foo@example.org |
gpg --clearsign --not-dash-escaped parche |
parche sin firmar |
gpg --verify archivo |
comprueba un archivo sin firmar |
gpg -o archivo.sig -b archivo |
crea un firma objetivo |
gpg -o archivo.sig --detach-sig archivo |
, , |
gpg --verify archivo.sig archivo |
comprueba el archivo con archivo.sig |
gpg -o archivo_cifrado.gpg -r nombre -e archivo |
intento de cifrado con clave pública para el nombre del archivo al arhivo binario archivo_cifrado.gpg |
gpg -o archivo_cifrado.gpg --recipient nombre --encrypt
archivo |
, , |
gpg -o archivo_cifrado.asc -a -r name -e archivo |
intento de cifrado con clave pública para el nombre del archivo al archivo blindado ASCII archivo_cifrado.asc |
gpg -o archivo_cifrado.gpg -c archivo |
cifrado simétrico de archivo a archivo_cifrado_gpg |
gpg -o archivo_cifrado.gpg --symmetric archivo |
, , |
gpg -o archivo_cifrado.asc -a -c archivo |
intento del cifrado simétrico para el nombre desde el archivo fuente al archivo blindado en ASCII archivo_cifrado.asc |
gpg -o archivo -d archivo_cifrado.gpg -r name |
Descifrado |
gpg -o file --decrypt archivo_cifrado.gpg |
, , |
Añada lo siguiente a «~/.muttrc
» para mantener el lento
el inicio automático de GnuPG, mientras permite usarlo pulsado
«S
» del menú principal.
macro index S ":toggle pgp_verify_sig\n" set pgp_verify_sig=no
The gnupg
plugin let you run GnuPG transparently for
files with extension ".gpg
", ".asc
",
and ".ppg
".[6]
$ sudo aptitude install vim-scripts $ echo "packadd! gnupg" >> ~/.vim/vimrc
md5sum
(1) proporciona la funcionalidad de hacer resumenes
de un archivo utilizando el método descrito en rfc1321 y verificar cada archivo con él.
$ md5sum foo bar >baz.md5 $ cat baz.md5 d3b07384d113edec49eaa6238ad5ff00 foo c157a79031e1c40f85931829bc5fc552 bar $ md5sum -c baz.md5 foo: OK bar: OK
![]() |
Nota |
---|---|
La computación de la suma MD5 es menos intensiva en CPU que la de firma criptográfica de GNU Privacy Guard (GnuPG). Normalmente, solo los archivos resumen de alto nivel están firmados criptologicamente para asegurar la integridad de la información. |
On GNOME system, the GUI tool seahorse
(1) manages
passwords and stores them securely in the keyring
~/.local/share/keyrings/*
.
secret-tool
(1) can store password to the keyring from the
command line.
Let's store passphrase used for LUKS/dm-crypt encrypted disk image
$ secret-tool store --label='LUKS passphrase for disk.img' LUKS my_disk.img Password: ********
This stored password can be retrieved and fed to other programs, e.g.,
cryptsetup
(8).
$ secret-tool lookup LUKS my_disk.img | \ cryptsetup open disk.img disk_img --type luks --keyring - $ sudo mount /dev/mapper/disk_img /mnt
![]() |
Sugerencia |
---|---|
Whenever you need to provide password in a script, use
|
Existen múltiples herramientas para el código fuente. Las siguientes órdenes llamaron mi atención.
Tabla 10.10. Relación de las herramientas para mezclar código fuente
paquete | popularidad | tamaño | orden | descripción |
---|---|---|---|---|
patch
|
V:90, I:702 | 248 | patch (1) |
aplica un archivo diff al original |
vim
|
V:97, I:390 | 3570 | vimdiff (1) |
compare dos archivos en vim uno contra otro |
imediff
|
V:0, I:0 | 169 | imediff (1) |
interactive full screen 2/3-way merge tool |
meld
|
V:11, I:34 | 3500 | meld (1) |
compara y mezcla archivos (GTK) |
wiggle
|
V:0, I:0 | 174 | wiggle (1) |
aplica parches rechazados |
diffutils
|
V:876, I:995 | 1597 | diff (1) |
compara archivos línea a línea |
diffutils
|
V:876, I:995 | 1597 | diff3 (1) |
compara y mezcla tres archivos línea a línea |
quilt
|
V:3, I:26 | 773 | quilt (1) |
gestiona un conjunto de parches |
wdiff
|
V:8, I:59 | 648 | wdiff (1) |
muestra las palabras diferentes en dos archivos de textos |
diffstat
|
V:12, I:127 | 74 | diffstat (1) |
produce un histográma de los cambios de diff |
patchutils
|
V:14, I:125 | 232 | combinediff (1) |
crea un parche acumulativo con dos parches incrementales |
patchutils
|
V:14, I:125 | 232 | dehtmldiff (1) |
extrae un diff de un página HTML |
patchutils
|
V:14, I:125 | 232 | filterdiff (1) |
extrae o excluye diffs de un archivo diff |
patchutils
|
V:14, I:125 | 232 | fixcvsdiff (1) |
repara archivos diff creados por CVS que son malinterpretados por
patch (1) |
patchutils
|
V:14, I:125 | 232 | flipdiff (1) |
intercambia el orden de dos parches |
patchutils
|
V:14, I:125 | 232 | grepdiff (1) |
muestra que archivos son modificados por un parche de acuerdo a una expresión regular |
patchutils
|
V:14, I:125 | 232 | interdiff (1) |
muestra las diferencias entre dos archivos diff unificados |
patchutils
|
V:14, I:125 | 232 | lsdiff (1) |
muestra los archivos modificados por un parche |
patchutils
|
V:14, I:125 | 232 | recountdiff (1) |
recalcula las cuentas y desplazamientos en un contexto diff unificado |
patchutils
|
V:14, I:125 | 232 | rediff (1) |
repara los desplazamientos y cuentas en un diff editado de forma manual |
patchutils
|
V:14, I:125 | 232 | splitdiff (1) |
selecciona parches incrementales |
patchutils
|
V:14, I:125 | 232 | unwrapdiff (1) |
deshace los parches que han sido mezclados |
dirdiff
|
V:0, I:2 | 167 | dirdiff (1) |
muestra las diferencias y mezcla los cambios entre árboles de directorio |
docdiff
|
V:0, I:0 | 553 | docdiff (1) |
compara dos archivos palabra a palabra / carácter a carácter |
makepatch
|
V:0, I:0 | 100 | makepatch (1) |
genera archivos de parches extendidos |
makepatch
|
V:0, I:0 | 100 | applypatch (1) |
aplica archivos de parches extendidos |
Los procedimientos siguientes extraen las diferencias entre dos archivos de
código fuente y crea los archivos diff unificados
«archivo.patch0
» o «archivo.patch1
»
dependiendo de la ubicación del archivo.
$ diff -u file.old file.new > file.patch0 $ diff -u old/file new/file > file.patch1
Un archivo diff (también llamado un parche o un archivo de parche) se utiliza para enviar una actualización de un programa. Quien lo recibe aplica esta actualización a otro archivo como se muestra.
$ patch -p0 file < file.patch0 $ patch -p1 file < file.patch1
If you have two versions of a source code, you can perform 2-way merge
interactively using imediff
(1) by the following.
$ imediff -o file.merged file.old file.new
If you have three versions of a source code, you can perform 3-way merge
interactively using imediff
(1) by the following.
$ imediff -o file.merged file.yours file.base file.theirs
Git is the tool of choice these days for the version control system (VCS) since Git can do everything for both local and remote source code management.
Debian provides free Git services via Debian Salsa service. Its documentation can be found at https://wiki.debian.org/Salsa .
Here are some Git related packages.
Tabla 10.11. Relación de paquetes y órdenes relacionados con git
paquete | popularidad | tamaño | orden | descripción |
---|---|---|---|---|
git
|
V:305, I:517 | 44453 | git (7) |
Git, el sistema de control de versiones rápido, escalable y distribuido |
gitk
|
V:4, I:36 | 1792 | gitk (1) |
Navegador de repositorios Git GUI con históricos |
git-gui
|
V:1, I:20 | 2386 | git-gui (1) |
GUI para Git (sin históricos) |
git-email
|
V:0, I:10 | 1040 | git-send-email (1) |
Git envia un conjunto de parches como un correo |
git-buildpackage
|
V:1, I:10 | 7351 | git-buildpackage (1) |
automatiza la creación de paquetes Debian con Git |
dgit
|
V:0, I:1 | 487 | dgit (1) |
git interoperability with the Debian archive |
imediff
|
V:0, I:0 | 169 | git-ime (1) |
interactive git commit split helper tool |
stgit
|
V:0, I:0 | 601 | stg (1) |
quilt sobre git (Python) |
git-doc
|
I:13 | 12989 | N/A | documentación oficial de Git |
gitmagic
|
I:0 | 721 | N/A | «Git Mágico«, una guía de Git fácil de entender |
Puede que quiera guardar parte de la configuración global en
«~/.gitconfig
» como su nombre y la dirección de correo
electrónico que utiliza Git como se muestra.
$ git config --global user.name "Name Surname" $ git config --global user.email yourname@example.com
You may also customize the Git default behavior by the following.
$ git config --global init.defaultBranch main $ git config --global pull.rebase true $ git config --global push.default current
Si esta acostumbrado a utilizar órdenes Subversion o CVS, puede que quiera crear algunos alias de orden como se muestra.
$ git config --global alias.ci "commit -a" $ git config --global alias.co checkout
Puede comprobar la configuración global como se muestra.
$ git config --global --list
Git operation involves several data.
The working tree which holds user facing files and you make changes to them.
The changes to be recorded must be explicitly selected and staged to the
index. This is git add
and git rm
commands.
The index which holds staged files.
Staged files will be committed to the local repository upon the subsequent
request. This is git commit
command.
The local repository which holds committed files.
Git records the linked history of the committed data and organizes them as branches in the repository.
The local repository can send data to the remote repository by git
push
command.
The local repository can receive data from the remote repository by
git fetch
and git pull
commands.
The git pull
command performs git
merge
or git rebase
command after git
fetch
command.
Here, git merge
combines two separate branches of history
at the end to a point. (This is default of git pull
without customization and may be good for upstream people who publish branch
to many people.)
Here, git rebase
creates one single branch of sequential
history of the remote branch one followed by the local branch one. (This is
pull.rebase true
customization case and may be good for
rest of us.)
The remote repository which holds committed files.
The communication to the remote repository uses secure communication protocols such as SSH or HTTPS.
The working tree is files outside of the .git/
directory. Files inside of the .git/
directory hold the
index, the local repository data, and some git configuration text files.
Here is an overview of main Git commands.
Tabla 10.12. Main Git commands
Git command | función |
---|---|
git init |
crea un repositorio (local) |
git clone URL |
clone the remote repository to a local repository with the working tree |
git pull origin main |
update the local main branch by the remote repository
origin |
git add . |
add file(s) in the working tree to the index for pre-existing files in index only |
git add -A . |
add file(s) in the working tree to the index for all files including removals |
git rm filename |
remove file(s) from the working tree and the index |
git commit |
commit staged changes in the index to the local repository |
git commit -a |
add all changes in the working tree to the index and commit them to the local repository (add + commit) |
git push -u origin branch_name |
update the remote repository origin by the local
branch_name branch (initial invocation) |
git push origin branch_name |
update the remote repository origin by the local
branch_name branch (subsequent invocation) |
git diff treeish1 treeish2 |
show difference between treeish1 commit and treeish2 commit |
gitk |
GUI display of VCS repository branch history tree |
Here are some Git tips.
Tabla 10.13. Git tips
Git command line | función |
---|---|
gitk --all |
see complete Git history and operate on them such as resetting HEAD to another commit, cheery-picking patches, creating tags and branches ... |
git stash |
get the clean working tree without loosing data |
git remote -v |
check settings for remote |
git branch -vv |
check settings for branch |
git status |
show working tree status |
git config -l |
list git settings |
git reset --hard HEAD; git clean -x -d -f |
revert all working tree changes and clean them up completely |
git rm --cached filename |
revert staged index changed by git add filename |
git reflog |
get reference log (useful for recovering commits from the removed branch) |
git branch new_branch_name HEAD@{6} |
create a new branch from reflog information |
git remote add new_remote URL |
add a new_remote remote repository pointed by URL |
git remote rename origin upstream |
rename the remote repository name from origin to
upstream |
git branch -u upstream/branch_name |
set the remote tracking to the remote repository upstream
and its branch name branch_name . |
git remote set-url origin https://foo/bar.git |
change URL of origin |
git remote set-url --push upstream DISABLED |
disable push to upstream (Edit
.git/config to re-enable) |
git checkout -b topic_branch ; git push -u topic_branch
origin |
make a new topic_branch and push it to
origin |
git branch -m oldname newname |
rename local branch name |
git push -d origin branch_to_be_removed |
remove remote branch (new method) |
git push origin :branch_to_be_removed |
remove remote branch (old method) |
git checkout --orphan unconnected |
crear una rama desconectada nueva |
git fetch upstream foo:upstream-foo |
create a local (possibly orphan) upstream-foo branch as a
copy of foo branch the upstream
repository |
git rebase -i origin/main |
reorder/drop/squish commits from origin/main to clean
branch history |
git reset HEAD^; git commit --amend |
squash last 2 commits into one |
git checkout topic_branch ; git merge --squash topic_branch
|
squash entire topic_branch into a commit |
git fetch --unshallow --update-head-ok origin
'+refs/heads/*:refs/heads/*' |
convert a shallow clone to the full clone of all branches |
git ime |
split the last commit into a series of file-by-file smaller commits
etc. (imediff package required) |
git repack -a -d; git prune |
repack the local repository into single pack (this may limit chance of lost data recovery from erased branch etc.) |
![]() |
Aviso |
---|---|
No utilice etiquetas con caracteres blancos a pesar de que algunas
herramientas permiten su utilización como |
![]() |
Atención |
---|---|
If a local branch which has been pushed to remote repository is rebased or
squashed, pushing this branch has risks and requires
|
![]() |
Atención |
---|---|
LLamar una subórden |
![]() |
Sugerencia |
---|---|
If there is a executable file |
Consulte lo siguiente.
manpage: git(1)
(/usr/share/doc/git-doc/git.html
)
Manual de Usuario
(/usr/share/doc/git-doc/user-manual.html
)
Un tutorial de introducción a
git (/usr/share/doc/git-doc/gittutorial.html
)
Un tutorial inicial a git:
parte dos
(/usr/share/doc/git-doc/gittutorial-2.html
)
Everyday GIT With 20 Commands
Or So (/usr/share/doc/git-doc/giteveryday.html
)
Git Mágico
(/usr/share/doc/gitmagic/html/index.html
)
The version control systems (VCS) is sometimes known as the revision control system (RCS), or the software configuration management (SCM).
Here is a summary of the notable other non-Git VCS on the Debian system.
Tabla 10.14. List of other version control system tools
paquete | popularidad | tamaño | herramienta | Tipo de CVS | comentario |
---|---|---|---|---|---|
mercurial
|
V:5, I:37 | 2013 | Mercurial | distribuido | CVS distribudo escrito en Python y una pequeña parte en C |
darcs
|
V:0, I:6 | 34070 | Darcs | distribuido | CVS distribuido con notación álgebraica inteligente (lento) |
bzr
|
I:11 | 28 | Bazaar | distribuido | DVCS influenced by tla written in Python (historic) |
tla
|
V:0, I:1 | 1022 | GNU arch | distribuido | DVCS mainly by Tom Lord (historic) |
subversion
|
V:15, I:86 | 4838 | Subversion | remoto | "CVS done right", newer standard remote VCS (historic) |
cvs
|
V:3, I:32 | 4620 | CVS | remoto | previous standard remote VCS (historic) |
tkcvs
|
V:0, I:1 | 1498 | CVS, … | remoto | Interfaz gráfico de usuario del árbol del repositorio de CVS (CVS, Subversion, RCS) |
rcs
|
V:2, I:16 | 564 | RCS | local | "Unix SCCS done right" (historic) |
cssc
|
V:0, I:2 | 2044 | CSSC | local | clone of the Unix SCCS (historic) |
[4] A write-once media such as CD/DVD-R can prevent overwrite accidents. (See Sección 9.8, “Datos binarios” for how to write to the storage media from the shell commandline. GNOME desktop GUI environment gives you easy access via menu: "Places→CD/DVD Creator".)
[5] Some of these data can not be regenerated by entering the same input string to the system.
[6] If you use "~/.vimrc
" instead of
"~/.vim/vimrc
", please substitute accordingly.