Índice
São descritas ferramentas e dicas para gerir dados binários e de texto no sistema Debian.
Atenção | |
---|---|
O acesso de escrita descoordenado a aparelhos acedidos activamente e a
ficheiros a partir de múltiplos processos não deve ser feito para evitar a
condição de competição. Devem ser
usados mecanismos de bloqueio de ficheiro
que usem o |
A segurança dos dados e a partilha controlada dele têm vários aspectos.
A criação de um arquivo de dados
O acesso a armazenamento remoto
A duplicação
O acompanhar do histórico de modificação
A facilitação da partilha de dados
A prevenção de acessos não autorizados a ficheiros
A detecção de modificação não autorizada de ficheiros
Estas podem ser realizadas a usar a combinação de algumas ferramentas.
Ferramentas de arquivo e compressão
Ferramentas de cópia de sincronização
Sistemas de ficheiros de rede
Media de armazenamento amovível
A shell segura
O sistema de autenticação
Ferramentas de sistema de controle de versão
Ferramentas de hash e encriptação criptográfica
Aqui está um sumário das ferramentas de arquivo e compressão disponíveis no sistema Debian.
Tabela 10.1. Lista de ferramentas de arquivo e compressão
pacote | popcon | tamanho | extensão | comando | comentário |
---|---|---|---|---|---|
tar
|
V:902, I:999 | 3077 | .tar |
tar (1) |
o arquivador standard (de facto standard) |
cpio
|
V:440, I:998 | 1199 | .cpio |
cpio (1) |
arquivador estilo Unix System V, usar com o find (1) |
binutils
|
V:172, I:629 | 144 | .ar |
ar (1) |
arquivador para a criação de bibliotecas estáticas |
fastjar
|
V:1, I:13 | 183 | .jar |
fastjar (1) |
arquivador para Java (estilo zip) |
pax
|
V:8, I:14 | 170 | .pax |
pax (1) |
novo arquivador standard do POSIX, um compromisso entre
tar e cpio |
gzip
|
V:876, I:999 | 252 | .gz |
gzip (1), zcat (1), … |
LZ77 utilitário de compressão do GNU (o standard de facto) |
bzip2
|
V:166, I:970 | 112 | .bz2 |
bzip2 (1), bzcat (1), … |
Compressão de organização de
blocos de Burrows-Wheeler utilitário com um rácio de compressão mais
alto que o gzip (1) (mais lento que o
gzip com sintaxe semelhante) |
lzma
|
V:1, I:16 | 149 | .lzma |
lzma (1) |
LZMA compression utility with higher compression
ratio than gzip (1) (deprecated) |
xz-utils
|
V:360, I:980 | 1203 | .xz |
xz (1), xzdec (1), … |
XZ utilitário de compressão com rácio de
compressão mais alto que o bzip2 (1) (mais lento que o
gzip mas mais rápido que o bzip2 ;
substituto para o utilitário de compressão LZMA) |
zstd
|
V:193, I:481 | 2158 | .zstd |
zstd (1), zstdcat (1), … |
Zstandard fast lossless compression utility |
p7zip
|
V:20, I:463 | 8 | .7z |
7zr (1), p7zip (1) |
7-Zip arquivador de arquivos com alta taxa de compressão (compressão LZMA) |
p7zip-full
|
V:110, I:480 | 12 | .7z |
7z (1), 7za (1) |
7-Zip arquivador de ficheiros com rácio de compressão alto (LZMA compressão e outros) |
lzop
|
V:15, I:142 | 164 | .lzo |
lzop (1) |
LZO utilitário de compressão com mais alta
compressão e mais rápida descompressão que o gzip (1)
(rácio de compressão mais baixo que o gzip com sintaxe
semelhante) |
zip
|
V:48, I:380 | 616 | .zip |
zip (1) |
InfoZIP: ferramenta de compressão e arquivo do DOS |
unzip
|
V:105, I:771 | 379 | .zip |
unzip (1) |
InfoZIP: ferramenta de descompressão e de de-arquivar do DOS |
Atenção | |
---|---|
Não defina a variável " |
O arquivo tar
(1) gzipado usa a extensão de ficheiro
".tgz
" ou ".tar.gz
".
O arquivo tar
(1) comprimido em xz usa a extensão de
ficheiro ".txz
" ou ".tar.xz
".
Método de compressão popular em ferramentas FOSS
tal como o tar
(1) têm se movido como a seguir:
gzip
→ bzip2
→ xz
cp
(1), scp
(1) e
tar
(1) podem ter algumas limitações para ficheiros
especiais. cpio
(1) é o mais versátil.
O cpio
(1) é desenhado para ser utilizado com o
find
(1) e outros comandos e apropriado para criar scripts
de backup pois a parte de seleção de ficheiros do script pode ser testada
independentemente.
A estrutura interna dos ficheiros de dados do Libreoffice são ficheiros
".jar
" que também podem ser abertos pelo
unzip
.
A ferramenta de arquivo que é "de-facto" multi-plataforma é o
zip
. Use-o como "zip -rX
" para obter o
máximo de compatibilidade. Use também a opção "-s
", se o
tamanho máximo de ficheiro for importante.
Aqui está um sumário de ferramentas de cópia simples e salvaguarda disponíveis no sistema Debian.
Tabela 10.2. Lista de ferramentas de cópia e sincronização
pacote | popcon | tamanho | ferramenta | função |
---|---|---|---|---|
coreutils
|
V:880, I:999 | 18307 | GNU cp | copia localmente ficheiros e diretórios ("-a" para ser recursivo) |
openssh-client
|
V:866, I:996 | 4959 | scp | copia remotamente ficheiros e diretórios (cliente, "-r "
para ser recursivo) |
openssh-server
|
V:730, I:814 | 1804 | sshd | copia ficheiros e diretórios remotamente (servidor remoto) |
rsync
|
V:246, I:552 | 781 | sincronização remota a salvaguarda de 1 via | |
unison
|
V:3, I:15 | 14 | sincronização remota a salvaguarda de 2 vias |
Copiar ficheiros com o rsync
(8) oferece funcionalidades
mais ricas que os outros.
algoritmo de transferência delta que envia apenas as diferenças entre os ficheiros da fonte e os ficheiros existentes no destino
algoritmo de verificação rápida (predefinido) que procura ficheiros que alteraram no tamanho ou hora da última modificação
opções "--exclude
" e "--exclude-from
"
semelhantes ao tar
(1)
sintaxe de "uma barra final no diretório fonte" que evita a criação de um nível de diretório adicional no destino.
Dica | |
---|---|
Ferramentas de sistema de controlo de versão (VCS) em Tabela 10.14, “List of other version control system tools” podem funcionar como a copia de multi-modos e ferramentas de sincronização. |
Aqui estão várias maneiras de arquivar e "desarquivar" o conteúdo completo
do diretório "./source
" a usar diferentes ferramentas.
GNU tar
(1):
$ tar -cvJf archive.tar.xz ./source $ tar -xvJf archive.tar.xz
Alternativamente, pelo seguinte.
$ find ./source -xdev -print0 | tar -cvJf archive.tar.xz --null -T -
cpio
(1):
$ find ./source -xdev -print0 | cpio -ov --null > archive.cpio; xz archive.cpio $ zcat archive.cpio.xz | cpio -i
Aqui estão algumas maneiras de copiar o conteúdo inteiro do diretório
"./source
" a usar diferentes ferramentas.
Cópia local: diretório "./source
" → diretório
"/dest
"
Cópia remota: diretório "./source
" em máquina local →
diretório "/dest
" na máquina
"utilizador@máquina.domínio
"
rsync
(8):
# cd ./source; rsync -aHAXSv . /dest # cd ./source; rsync -aHAXSv . user@host.dom:/dest
Pode alternativamente usar a sintaxe de "uma barra à direita no diretório fonte".
# rsync -aHAXSv ./source/ /dest # rsync -aHAXSv ./source/ user@host.dom:/dest
Alternativamente, pelo seguinte.
# 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 e 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
Pode substituir ".
" por "foo
" para
todos os exemplos que contenham ".
" para copiar ficheiros
do diretório "./source/foo
" ao diretório
"/dest/foo
".
Pode substituir ".
" pelo caminho absoluto
"/caminho/para/fonte/foo
" para todos os exemplos que
contenham ".
" para abandonar "cd
./source;
". Estes copiam ficheiros para localizações diferentes a
depender das ferramentas utilizadas conforme a seguir.
"/dest/foo
": rsync
(8),
cp
(1) do GNU e scp
(1)
"/dest/path/to/source/foo
": GNU tar
(1)
e cpio
(1)
Dica | |
---|---|
|
O find
(1) é usado para selecionar ficheiros para o
arquivo e copiar comandos (veja Secção 10.1.3, “Idiomas para o arquivo” e
Secção 10.1.4, “Idiomas para a cópia”) ou para xargs
(1)
(veja Secção 9.4.9, “Repetir um ciclo de comandos sobre ficheiros”). Isto pode
ser melhorado ao usar os seus argumentos de comando.
A sintaxe básica de find
(1) pode ser sumariada no
seguinte.
Os seus argumentos condicionais são avaliados da esquerda à direita.
Esta avaliação pára assim que o resultado dele é determinado.
O "OU lógico" (especificado por
"-o
" entre condicionais) tem precedência mais baixa que o
"E lógico" (especificado por
"-a
" ou nada entre condicionais).
O "NÃO lógico" (especificado por
"!
" antes duma condicional) tem precedência mas alta que
o "E lógico".
"-prune
" retorna sempre o VERDADEIRO lógico e, se for um diretório, a busca
de ficheiro é parada para além deste ponto.
"-name
" corresponde à base do nome de ficheiro com glob
de shell (veja Secção 1.5.6, “Glob da shell”) mas também corresponde ao
".
" inicial dele com meta-caracteres como o
"*
" e o "?
". (Nova funcionalidade do
POSIX)
"-regex
" corresponde ao caminho completo com estilo emacs
BRE (veja Secção 1.6.2, “Expressões regulares”) como predefinição.
"-size
" corresponde ao ficheiro baseado no tamanho do
ficheiro (valor precedido de "+
" para maior, precedido de
"-
" para menor)
"-newer
" corresponde ao ficheiro mais recente que aquele
especificado no argumento dele.
"-print0
" retorna sempre o TRUE lógico e escreve o nome de ficheiro completo
(terminado em nulo) na saída standard.
O find
(1) é usado geralmente com um estilo idiomático
como a seguir.
# 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
Isto significa fazer as seguintes acções.
Procurar todos os ficheiros que começam por
"/caminho/para
"
Limitar globalmente a busca para dentro do sistema de ficheiros inicial e usa ERE (ao inves veja Secção 1.6.2, “Expressões regulares”)
Excluir da busca os ficheiros que correspondem à expressão regular
".*\.cpio
" ou ".*~
" ao parar o
processamento
Excluir da busca os diretórios que correspondem à expressão regular
".*/\.git
" ao parar o processamento
Exclui da busca os ficheiros maiores que 99 Mb (unidades de 1048576 bytes) ao parar o processamento
Escrever os nomes de ficheiros que satisfazem as condições de busca em cima
e são mais recentes que "/caminho/para/timestamp
"
Por favor note a utilização idiomática de "-prune -o
"
para excluir ficheiros no exemplo em cima.
Nota | |
---|---|
Para um sistema não-Debian tipo Unix,
algumas opções podem não ser suportadas pelo |
Quando escolher o meio de armazenamento de dados de computador para arquivar dados importantes, deverá ter cuidado com as suas limitações. Para os pequenos backups de dados pessoais uso CD-Rs e DVD-Rs de uma boa marca e guardo-os num ambiente fresco, à sombra, seco e limpo. (O meio de cassete de fita magnética parece ser popular para uso profissional.)
Nota | |
---|---|
A segurança de resistência ao fogo destina-se a documentos de papel. A maioria dos meios de armazenamento de dados de computador têm menos tolerância à temperatura que o papel. Geralmente Confio em múltiplas cópias de segurança encriptadas em múltiplas localizações seguras. |
A duração de vida optimista de meios de arquivo vista na net (a maioria é informação do fabricante).
+ de 100 anos : Papel livre de ácidos com tinta
100 anos : Armazenamento óptico (CD/DVD, CD/DVD-R)
30 anos : Armazenamento magnético (fita, disquete)
20 anos : Armazenamento óptico de mudança de fase (CD-RW)
Estes não contam com falhas mecânicas devido a manuseamento e etc.
Ciclos de escrita optimistas dos meios de arquivo vistos na net (a maioria é informação do fabricante).
+ de 250,000 ciclos : Disco rígido
+ de 10,000 ciclos : Memória Flash
1,000 ciclos : CD/DVD-RW
1 ciclo : CD/DVD-R, papel
Cuidado | |
---|---|
As figuras de vida de armazenamento e ciclos de escrita mostradas aqui não devem ser usadas para decisões em qualquer armazenamento de dados crítico. Por favor consulte a informação específica do produto disponibilizada pelo fabricante. |
Dica | |
---|---|
Como os CD/DVD-R e o papel têm apenas 1 ciclo de escrita, eles previnem perdas de dados acidentais ao sobrescrever. Isto é uma vantagem! |
Dica | |
---|---|
Se precisa de um backup rápido e frequente de grandes quantidades de dados, um disco rígido numa máquina remota ligada por uma ligação de rede rápida, pode ser a única opção realista. |
Aparelhos de armazenamento amovível podem ser qualquer um dos seguintes.
Câmara digital
Leitor digital de música
Podem ser ligados por qualquer um dos seguintes:
Os ambientes de trabalho modernos tais como o GNOME e KDE podem montar
automaticamente estes aparelhos amovíveis sem uma entrada correspondente no
"/etc/fstab
".
Dica | |
---|---|
Os aparelhos auto-montados podem ter a opção de montagem
" |
Dica | |
---|---|
A auto-montagem em ambientes de trabalho modernos apenas acontece quando
esses aparelhos amovíveis não estão listados em
" |
Mount point under modern desktop environment is chosen as
"/media/username/disk_label
" which
can be customized by the following.
mlabel
(1) para o sistema de ficheiros FAT
genisoimage
(1) com a opção "-V
" para o
sistema de ficheiros ISO9660
tune2fs
(1) com a opção "-L
" para
sistemas de ficheiros ext2/ext3/ext4
Dica | |
---|---|
A escolha de codificação pode necessitar de ser disponibilizada como opção de montagem (veja Secção 8.1.3, “Codificação de nomes de ficheiros”). |
Dica | |
---|---|
A utilização do menu da GUI para desmontar um sistema de ficheiros pode
remover o nó de aparelho dele gerado dinamicamente tal como
" |
Quando partilha dados com outros sistemas via aparelhos de armazenamento amovível, deve formatá-lo num sistema de ficheiros comum que seja suportado pelos dois sistemas. Aqui está uma lista de escolhas de sistemas de ficheiros.
Tabela 10.3. Lista de hipóteses de sistemas de ficheiros para aparelhos de armazenamento amovíveis com cenários de utilização típica
filesystem name | typical usage scenario |
---|---|
FAT12 | partilha de dados em várias plataformas em disquetes (<32MiB) |
FAT16 | partilha de dados em várias plataformas em aparelhos como pequenos discos rígidos (<2GiB) |
FAT32 | partilha de dados em várias plataformas em aparelhos como grandes discos rígidos (<8TiB, suportado por mais recente que MS Windows95 OSR2) |
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 | partilha de dados em várias plataformas em aparelhos como grandes discos rígidos (suportado nativamente no MS Windows NT e versões posteriores e suportado pelo NTFS-3G via FUSE em Linux) |
ISO9660 | partilha de dados estáticos em várias plataformas em CD-R e DVD+/-R |
UDF | escrita de dados incremental em CD-R e DVD+/-R (novo) |
MINIX | armazenamento de dados em ficheiros unix eficiente em espaço em disquetes |
ext2 | partilha de dados em aparelhos tipo disco rígido com sistemas Linux mais antigos |
ext3 | partilha de dados em aparelhos tipo disco rígido com sistemas Linux mais antigos |
ext4 | partilha de dados em aparelhos de tipo disco rígido com sistemas Linux atuais |
btrfs | sharing of data on the hard disk like device with current Linux systems with read-only snapshots |
Dica | |
---|---|
Veja Secção 9.9.1, “Encriptação de discos amovíveis com dm-crypt/LUKS” para partilha de dados em várias plataformas a usar encriptação ao nível do aparelho. |
O sistema de ficheiros FAT é suportado pela maioria dos sistemas operativos modernos e é bastante útil para objetivos de trocas de dados via aparelhos tipo disco rígido.
Quando formatar aparelhos tipo disco rígido amovíveis para partilha de dados em multi-plataformas com o sistema de ficheiros FAT, as seguintes deverão ser escolhas seguras.
Particioná-los com o fdisk
(8),
cfdisk
(8) ou parted
(8) (veja Secção 9.6.2, “Configuração das partições do disco”) numa única partição primária e
marcá-la como a seguir.
Tipo "6" para FAT16 para médias inferiores a 2GB.
Tipo "c" para FAT32 (LBA) para médias maiores.
Formatar a partição primária com o mkfs.vfat
(8) com o
seguinte.
Apenas o nome de aparelho dele, ex. "/dev/sda1
" para
FAT16
A opção explícita e o nome de aparelho dela, ex. "-F 32
/dev/sda1
" para FAT32
Quando se usa sistemas de ficheiros FAT ou ISO9660 para partilhar dados, as considerações de segurança deverão ser as seguintes.
Arquivar ficheiros para um ficheiro de arquivo primeiro a utilizar o
tar
(1), ou cpio
(1) para reter o nome
longo do ficheiro, a ligação simbólica, as permissões originais de ficheiro
Unix e a informação do dono.
Dividir o ficheiro de arquivo em fatias com menos de 2 GiB com o comando
split
(1) para o proteger contra limites de tamanho de
ficheiro.
Encriptar o ficheiro de arquivo para segurar o conteúdo dele contra acesso não autorizado.
Nota | |
---|---|
Para o sistema de ficheiros FAT pelo seu desenho, o tamanho máximo de
ficheiro é |
Nota | |
---|---|
A própria Microsoft não recomenda o uso de FAT para discos ou partições maiores que 200 MB. A Microsoft destaca as suas deficiências como a ser a utilização ineficiente do espaço do disco na "Visão geral dos sistemas de ficheiros FAT, HPFS e NTFS" dele. Claro que devemos normalmente usar o sistema de ficheiros ext4 para Linux. |
Dica | |
---|---|
Para mais sistemas de ficheiros e acesso a sistemas de ficheiros, por favor leia "HOWTO dos Sistemas de Ficheiros". |
Quando se partilha dados com outro sistema via rede, deve usar serviços comuns. Aqui estão algumas dicas.
Tabela 10.4. Lista de serviços de rede para escolher com o cenário de utilização típico
serviço de rede | descrição do cenário de utilização típico |
---|---|
SMB/CIFS sistema de ficheiros montado em rede com o Samba | partilha ficheiros via "Rede Microsoft Windows", veja
smb.conf (5) e O HOWTO Oficial do Samba 3.x.x e
Guia de Referência ou o pacote samba-doc |
NFS sistema de ficheiros montado em rede com o kernel do Linux | partilhar ficheiros via "Rede Unix/Linux", veja
exports (5) e Linux
NFS-HOWTO |
serviço HTTP | a partilhar ficheiros entre o servidor/cliente web |
serviço HTTPS | partilhar ficheiros entre o servidor/cliente web com Secure Sockets Layer encriptado (SSL) ou Transport Layer Security (TLS) |
serviço FTP | a partilhar ficheiros entre o servidor/cliente FTP |
Apesar de estes sistemas de ficheiros montados sobre rede e métodos de transferência de ficheiros em rede serem bastante convenientes para partilhar dados, estes podem ser inseguros. A ligação de rede deles tem de ser segurada com o seguinte.
Veja também Secção 6.5, “Outras aplicações de servidor de rede” e Secção 6.6, “Outros clientes de aplicação de rede”.
Todos sabemos que os computadores avariam ou que erros humanos causam danos no sistema e nos dados. As operações de salvaguarda e recuperação são a parte essencial sucesso do administrador de sistemas. Todos os modos de falha possíveis irão atingi-lo um dia.
Dica | |
---|---|
Mantenha o seu sistema de backup simples e faça backups periódicos. Ter cópias de segurança dos dados é mais importante do que quão bom é tecnicamente o seu método de backup. |
Existem 3 factores chave que determinam a política atual de salvaguarda e recuperação.
Saber o que salvaguardar e recuperar.
Ficheiros de dados criados directamente por si: dados em
"~/
"
Ficheiros de dados criados por aplicações usadas por si: dados em
"/var/
" (excepto "/var/cache/
",
"/var/run/
" e "/var/tmp/
")
Ficheiros de configuração do sistema: dados em "/etc/
"
Local programs: data in "/usr/local/
" or
"/opt/
"
Informação da instalação do sistema: um memo em texto simples em passos chave (partição, ...)
Conjunto de dados de prova: confirmado com antecedência por operações de recuperação experimentais
Cron job as a user process: files in
"/var/spool/cron/crontabs
" directory and restart
cron
(8). See Secção 9.4.14, “Agendar tarefas regularmente” 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 salvaguardar e recuperar.
Armazenamento de dados seguro: protecção contra reescrita e falha do sistema
Salvaguarda frequente: salvaguarda agendada
Backup redundante: usar mirror de dados
Processo à prova de tolos: backup fácil de comando único
Avaliar os riscos e custos envolvidos.
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 Secção 9.9, “Dicas de encriptação de dados”.)
Never hard code system login password nor decryption passphrase in any script even on any trusted system. (See Secção 10.3.6, “Password keyring”.)
Modo de falha e a possibilidade dele
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
Recursos necessários para o backup: humano, hardware, software,…
Automatic scheduled backup with cron job or systemd timer job
Dica | |
---|---|
Pode recuperar dados configuração debconf com
" |
Nota | |
---|---|
Não faça salvaguarda aos conteúdos dos pseudo-sistemas de ficheiros
encontrados em |
Nota | |
---|---|
Pode desejar parar alguns daemons de aplicação como o MTA (veja Secção 6.2.4, “Agente de transporte de mail (MTA)”) enquanto faz cópias de segurança (backups) dos dados. |
Aqui está uma lista selcionada de suites de utilitários de backup notáveis disponíveis no sistema Debian.
Tabela 10.5. Lista de suites utilitárias de salvaguarda
pacote | popcon | tamanho | descrição |
---|---|---|---|
bacula-common
|
V:8, I:10 | 2305 | Bacula: salvaguarda, recuperação e verificação em rede - ficheiros de suporte comum |
bacula-client
|
V:0, I:2 | 178 | Bacula: salvaguarda, recuperação e verificação em rede - meta-pacote cliente |
bacula-console
|
V:0, I:3 | 112 | Bacula: salvaguarda, recuperação e verificação em rede - consola de texto |
bacula-server
|
I:0 | 178 | Bacula: salvaguarda, recuperação e verificação em rede - meta-pacote servidor |
amanda-common
|
V:0, I:2 | 9897 | Amanda: Advanced Maryland Automatic Network Disk Archiver (Bibliotecas) |
amanda-client
|
V:0, I:2 | 1092 | Amanda: Advanced Maryland Automatic Network Disk Archiver (Cliente) |
amanda-server
|
V:0, I:0 | 1077 | Amanda: Advanced Maryland Automatic Network Disk Archiver (Servidor) |
backuppc
|
V:2, I:2 | 3178 | BackupPC é um sistema de grau empresarial de alta performance para fazer salvaguardas a PCs (baseado em disco) |
duplicity
|
V:30, I:50 | 1973 | salvaguarda incremental (remoto) |
deja-dup
|
V:28, I:44 | 4992 | GUI frontend for duplicity |
borgbackup
|
V:11, I:20 | 3301 | (remote) deduplicating backup |
borgmatic
|
V:2, I:3 | 509 | borgbackup helper |
rdiff-backup
|
V:4, I:10 | 1203 | salvaguarda incremental (remoto) |
restic
|
V:2, I:6 | 21385 | salvaguarda incremental (remoto) |
backupninja
|
V:2, I:3 | 360 | sistema de meta-backup leve e extensível |
flexbackup
|
V:0, I:0 | 243 | salvaguarda incremental (remoto) |
slbackup
|
V:0, I:0 | 151 | salvaguarda incremental (remoto) |
backup-manager
|
V:0, I:1 | 566 | ferramenta de salvaguarda de linha de comandos |
backup2l
|
V:0, I:0 | 115 | ferramenta de baixa manutenção para salvaguarda/restauro para medias montáveis (baseado em disco) |
As ferramentas de salvaguarda têm os seus objetivos especializados.
Mondo Rescue é um sistema de backup para facilitar o restauro de um sistema completo rapidamente a partir de CD/DVD, etc de backup, sem se passar por todo o processo normal de instalação do sistema.
Bacula, Amanda e BackupPC são suites utilitárias de salvaguarda cheias de funcionalidades que se destinam a salvaguardas regulares em rede.
Duplicity, and Borg are simpler backup utilities for typical workstations.
For a personal workstation, full featured backup suite utilities designed for the server environment may not serve well. At the same time, existing backup utilities for workstations may have some shortcomings.
Here are some tips to make backup easier with minimal user efforts. These techniques may be used with any backup utilities.
For demonstration purpose, let's assume the primary user and group name to
be penguin
and create a backup and snapshot script
example "/usr/local/bin/bkss.sh
" as:
#!/bin/sh -e SRC="$1" # source data path DSTFS="$2" # backup destination filesystem path DSTSV="$3" # backup destination subvolume name DSTSS="${DSTFS}/${DSTSV}-snapshot" # snapshot destination path if [ "$(stat -f -c %T "$DSTFS")" != "btrfs" ]; then echo "E: $DESTFS needs to be formatted to btrfs" >&2 ; exit 1 fi MSGID=$(notify-send -p "bkup.sh $DSTSV" "in progress ...") if [ ! -d "$DSTFS/$DSTSV" ]; then btrfs subvolume create "$DSTFS/$DSTSV" mkdir -p "$DSTSS" fi rsync -aHxS --delete --mkpath "${SRC}/" "${DSTFS}/${DSTSV}" btrfs subvolume snapshot -r "${DSTFS}/${DSTSV}" ${DSTSS}/$(date -u --iso=min) notify-send -r "$MSGID" "bkup.sh $DSTSV" "finished!"
Here, only the basic tool rsync
(1) is used to facilitate
system backup and the storage space is efficiently used by Btrfs.
Dica | |
---|---|
FYI: This author uses his own similar shell script "bss: Btrfs Subvolume Snapshot Utility" for his workstation. |
Here is an example to setup the single GUI click backup.
Prepare a USB storage device to be used for backup.
Format a USB storage device with one partition in btrfs with its label name
as "BKUP
". This can be encrypted (see Secção 9.9.1, “Encriptação de discos amovíveis com dm-crypt/LUKS”).
Plug this in to your system. The desktop system should automatically mount
it as "/media/penguin/BKUP
".
Execute "sudo chown penguin:penguin /media/penguin/BKUP
"
to make it writable by the user.
Create "~/.local/share/applications/BKUP.desktop
"
following techniques written in Secção 9.4.10, “Arrancar um programa a partir da GUI” as:
[Desktop Entry] Name=bkss Comment=Backup and snapshot of ~/Documents Exec=/usr/local/bin/bkss.sh /home/penguin/Documents /media/penguin/BKUP Documents Type=Application
For each GUI click, your data is backed up from
"~/Documents
" to a USB storage device and a read-only
snapshot is created.
Here is an example to setup for the automatic backup triggered by the mount event.
Prepare a USB storage device to be used for backup as in Secção 10.2.3.1, “GUI backup”.
Create a systemd service unit file
"~/.config/systemd/user/back-BKUP.service
" as:
[Unit] Description=USB Disk backup Requires=media-%u-BKUP.mount After=media-%u-BKUP.mount [Service] ExecStart=/usr/local/bin/bkss.sh %h/Documents /media/%u/BKUP Documents StandardOutput=append:%h/.cache/systemd-snap.log StandardError=append:%h/.cache/systemd-snap.log [Install] WantedBy=media-%u-BKUP.mount
Enable this systemd unit configuration with the following:
$ systemctl --user enable bkup-BKUP.service
For each mount event, your data is backed up from
"~/Documents
" to a USB storage device and a read-only
snapshot is created.
Here, names of systemd mount units that systemd currently has in memory can
be asked to the service manager of the calling user with "systemctl
--user list-units --type=mount
".
Here is an example to setup for the automatic backup triggered by the timer event.
Prepare a USB storage device to be used for backup as in Secção 10.2.3.1, “GUI backup”.
Create a systemd timer unit file
"~/.config/systemd/user/snap-Documents.timer
" as:
[Unit] Description=Run btrfs subvolume snapshot on timer Documentation=man:btrfs(1) [Timer] OnStartupSec=30 OnUnitInactiveSec=900 [Install] WantedBy=timers.target
Create a systemd service unit file
"~/.config/systemd/user/snap-Documents.service
" as:
[Unit] Description=Run btrfs subvolume snapshot Documentation=man:btrfs(1) [Service] Type=oneshot Nice=15 ExecStart=/usr/local/bin/bkss.sh %h/Documents /media/%u/BKUP Documents IOSchedulingClass=idle CPUSchedulingPolicy=idle StandardOutput=append:%h/.cache/systemd-snap.log StandardError=append:%h/.cache/systemd-snap.log
Enable this systemd unit configuration with the following:
$ systemctl --user enable snap-Documents.timer
For each timer event, your data is backed up from
"~/Documents
" to a USB storage device and a read-only
snapshot is created.
Here, names of systemd timer user units that systemd currently has in memory
can be asked to the service manager of the calling user with
"systemctl --user list-units --type=timer
".
For the modern desktop system, this systemd approach can offer more fine
grained control than the traditional Unix ones using
at
(1), cron
(8), or
anacron
(8).
A infraestrutura de segurança dos dados é disponibilizada pela combinação de uma ferramenta de encriptação de dados, ferramenta de resumo de mensagens e ferramenta de assinaturas.
Tabela 10.6. Lista de ferramentas de infraestrutura da segurança de dados
pacote | popcon | tamanho | comando | descrição |
---|---|---|---|---|
gnupg
|
V:554, I:906 | 885 | gpg (1) |
GNU Privacy Guard - ferramenta de encriptação e assinatura OpenPGP |
gpgv
|
V:893, I:999 | 922 | gpgv (1) |
GNU Privacy Guard - ferramenta de verificação de assinaturas |
paperkey
|
V:1, I:14 | 58 | paperkey (1) |
extrai apenas a informação secreta de chaves secretas OpenPGP |
cryptsetup
|
V:19, I:79 | 417 | cryptsetup (8), … |
utilities for dm-crypt block device encryption supporting LUKS |
coreutils
|
V:880, I:999 | 18307 | md5sum (1) |
computa e verifica o resumo da mensagem MD5 |
coreutils
|
V:880, I:999 | 18307 | sha1sum (1) |
computa e verifica o resumo da mensagem SHA1 |
openssl
|
V:841, I:995 | 2111 | openssl (1ssl) |
computa o resumo da mensagem com "openssl dgst " (OpenSSL) |
libsecret-tools
|
V:0, I:10 | 41 | secret-tool (1) |
store and retrieve passwords (CLI) |
seahorse
|
V:80, I:269 | 7987 | seahorse (1) |
key management tool (GNOME) |
See Secção 9.9, “Dicas de encriptação de dados” on dm-crypt and fscrypt which implement automatic data encryption infrastructure via Linux kernel modules.
Aqui estão comandos do GNU Privacy Guard para gestão de chaves básica.
Tabela 10.7. Lista de comandos do GNU Privacy Guard para gestão de chaves
comando | descrição |
---|---|
gpg --gen-key |
gerar uma chave nova |
gpg --gen-revoke meu_ID_utilizador |
gera chave de revogação para meu_ID_utilizador |
gpg --edit-key ID_utilizador |
edita chave interativamente, "help" para ajuda |
gpg -o ficheiro --export |
exporta todas as chaves para ficheiro |
gpg --import ficheiro |
importa todas as chaves de ficheiro |
gpg --send-keys ID_utilizador |
envia chave de ID_utilizador para servidor de chaves |
gpg --recv-keys ID_utilizador |
recupera chave de ID_utilizador do servidor de chaves |
gpg --list-keys ID_utilizador |
lista chaves de ID_utilizador |
gpg --list-sigs ID_utilizador |
lista assinaturas de ID_utilizador |
gpg --check-sigs ID_utilizador |
verifica assinaturas de ID_utilizador |
gpg --fingerprint ID_utilizador |
verifica a impressão digital de ID_utilizador |
gpg --refresh-keys |
atualiza o chaveiro local |
Aqui está o significado do código de confiança.
Tabela 10.8. Lista do significado do código de confiança
código | descrição de confiança |
---|---|
- |
nenhuma confiança de dono atribuída / ainda não calculado |
e |
falha no cálculo da confiança |
q |
não existe informação suficiente para o cálculo |
n |
nunca confiar nesta chave |
m |
marginalmente confiável |
f |
totalmente confiável |
u |
de confiança absoluta |
O seguinte envia a minha chave "1DD8D791
" para o popular
servidor de chaves "hkp://keys.gnupg.net
".
$ gpg --keyserver hkp://keys.gnupg.net --send-keys 1DD8D791
Um bom servidor de chaves predefinido configurado em
"~/.gnupg/gpg.conf
" (ou na antiga localização
"~/.gnupg/options
") contém o seguinte.
keyserver hkp://keys.gnupg.net
O seguinte obtém chaves desconhecidas do servidor de chaves.
$ gpg --list-sigs --with-colons | grep '^sig.*\[User ID not found\]' |\ cut -d ':' -f 5| sort | uniq | xargs gpg --recv-keys
Existiu um bug no OpenPGP Public Key
Server (versão anterior a 0.9.6) que corrompeu as chaves com mais de
2 sub-chaves. O novo pacote gnupg
(>1.2.1-2) consegue
lidar com estas chaves corrompidas. Veja gpg
(1) sob a
opção "--repair-pks-subkey-bug
".
Aqui estão exemplos para usar comandos do GNU Privacy Guard em ficheiros.
Tabela 10.9. Lista de comandos do GNU Privacy Guard em ficheiros
comando | descrição |
---|---|
gpg -a -s ficheiro |
assina ficheiro em ficheiro.asc blindado de ASCII |
gpg --armor --sign ficheiro |
, , |
gpg --clearsign ficheiro |
mensagem com assinatura clara |
gpg --clearsign file|mail foo@example.org |
envia por mail uma mensagem com assinatura clara para
foo@example.org |
gpg --clearsign --not-dash-escaped patchfile |
ficheiro patch com assinatura clara |
gpg --verify ficheiro |
verifica ficheiro com assinatura clara |
gpg -o ficheiro.sig -b ficheiro |
cria assinatura separada |
gpg -o file.sig --detach-sign file |
, , |
gpg --verify ficheiro.sig ficheiro |
verifica ficheiro com file.sig |
gpg -o crypt_file.gpg -r nome -e ficheiro |
encriptação de chave pública destinada a nome a partir de ficheiro para crypt_file.gpg binário |
gpg -o crypt_file.gpg --recipient nome --encrypt ficheiro |
, , |
gpg -o crypt_file.asc -a -r nome -e ficheiro |
encriptação de chave pública destinada a nome a partir de ficheiro para crypt_file.asc blindado de ASCII |
gpg -o crypt_file.gpg -c ficheiro |
encriptação simétrica a partir de ficheiro para crypt_file.gpg |
gpg -o crypt_file.gpg --symmetric ficheiro |
, , |
gpg -o crypt_file.asc -a -c ficheiro |
encriptação simétrica destinada a nome a partir de ficheiro para crypt_file.asc blindado de ASCII |
gpg -o ficheiro -d crypt_file.gpg -r nome |
desencriptação |
gpg -o ficheiro --decrypt crypt_file.gpg |
, , |
Adicione o seguinte a "~/.muttrc
" para impedir o GnuPG
lento de arrancar automaticamente, enquanto permite que seja usado ao
escrever "S
" no menu de índice.
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 ".pgp
".[6]
$ sudo aptitude install vim-scripts $ echo "packadd! gnupg" >> ~/.vim/vimrc
O md5sum
(1) disponibiliza um utilitário para fazer um
ficheiro de sumário a usar o método em rfc1321 e verificar cada ficheiro com ele.
$ md5sum foo bar >baz.md5 $ cat baz.md5 d3b07384d113edec49eaa6238ad5ff00 foo c157a79031e1c40f85931829bc5fc552 bar $ md5sum -c baz.md5 foo: OK bar: OK
Nota | |
---|---|
O cálculo do sumário MD5 é menos intensivo para a CPU que o da assinatura criptográfica do GNU Privacy Guard (GnuPG). Normalmente, apenas o ficheiro de digestão do nível de topo é assinado criptograficamente para assegurar a integridade dos dados. |
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
Dica | |
---|---|
Whenever you need to provide password in a script, use
|
Existem muitas ferramentas de fusão para código fonte. Os seguinte comandos chamaram a minha atenção.
Tabela 10.10. Lista de ferramentas de fusão de código fonte
pacote | popcon | tamanho | comando | descrição |
---|---|---|---|---|
patch
|
V:97, I:700 | 248 | patch (1) |
aplica ficheiro diff a um original |
vim
|
V:95, I:369 | 3743 | vimdiff (1) |
compara dois ficheiros lado a lado no vim |
imediff
|
V:0, I:0 | 200 | imediff (1) |
ferramenta de fusão de 2 ou 3 vias interactiva de écran completo |
meld
|
V:7, I:30 | 3536 | meld (1) |
compara e funde ficheiros (GTK) |
wiggle
|
V:0, I:0 | 175 | wiggle (1) |
aplica patches rejeitadas |
diffutils
|
V:862, I:996 | 1735 | diff (1) |
compara ficheiros linha a linha |
diffutils
|
V:862, I:996 | 1735 | diff3 (1) |
compara e junta três ficheiros linha a linha |
quilt
|
V:2, I:22 | 871 | quilt (1) |
gere séries de patches |
wdiff
|
V:7, I:51 | 648 | wdiff (1) |
mostra diferenças de palavras entre ficheiros de texto |
diffstat
|
V:13, I:121 | 74 | diffstat (1) |
produz um histograma de alterações feitas pelo diff |
patchutils
|
V:16, I:119 | 232 | combinediff (1) |
cria uma patch cumulativa de duas patches incrementais |
patchutils
|
V:16, I:119 | 232 | dehtmldiff (1) |
extrai um diff de uma página HTML |
patchutils
|
V:16, I:119 | 232 | filterdiff (1) |
extrai ou executa diffs de um ficheiro diff |
patchutils
|
V:16, I:119 | 232 | fixcvsdiff (1) |
corrige ficheiros diff criados pelo CVS que o patch (1)
interpreta mal |
patchutils
|
V:16, I:119 | 232 | flipdiff (1) |
troca a ordem de duas patches |
patchutils
|
V:16, I:119 | 232 | grepdiff (1) |
mostra que ficheiros são modificados por uma patch que corresponde a um regex |
patchutils
|
V:16, I:119 | 232 | interdiff (1) |
mostra as diferenças entre dois ficheiros diff unificados |
patchutils
|
V:16, I:119 | 232 | lsdiff (1) |
mostra quais ficheiros são modificados por uma patch |
patchutils
|
V:16, I:119 | 232 | recountdiff (1) |
recalcula contagens e offsets em diffs de contexto unificado |
patchutils
|
V:16, I:119 | 232 | rediff (1) |
corrige os offsets e as contagens de um diff editado manualmente |
patchutils
|
V:16, I:119 | 232 | splitdiff (1) |
separa patches incrementais |
patchutils
|
V:16, I:119 | 232 | unwrapdiff (1) |
desembaralha patches cujas linhas foram alteradas para arrumação de palavras |
dirdiff
|
V:0, I:1 | 167 | dirdiff (1) |
mostra diferenças e funde alterações entre árvores de diretórios |
docdiff
|
V:0, I:0 | 553 | docdiff (1) |
compara dois ficheiros palavra a palavra / caractere a caractere |
makepatch
|
V:0, I:0 | 100 | makepatch (1) |
gera ficheiros de patch extensos |
makepatch
|
V:0, I:0 | 100 | applypatch (1) |
aplica ficheiros de patch extensos |
Os seguintes procedimentos extraem as diferenças entre dois ficheiros de
fonte e cria os ficheiros diff unificados "file.patch0
"
ou "file.patch1
" a depender da localização do ficheiro.
$ diff -u file.old file.new > file.patch0 $ diff -u old/file new/file > file.patch1
O ficheiro diff (alternativamente chamado ficheiro patch) é usado para enviar uma atualização de um programa. A parte receptora aplica esta atualização a outro ficheiro com o seguinte.
$ 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.
O Debian disponibiliza serviços Git livres via Serviço Debian Salsa.. A sua documentação encontra-se em https://wiki.debian.org/Salsa .
Here are some Git related packages.
Tabela 10.11. Lista de pacotes e comandos relacionados com o git
pacote | popcon | tamanho | comando | descrição |
---|---|---|---|---|
git
|
V:351, I:549 | 46734 | git (7) |
Git, o sistema de controlo de revisão distribuído, rápido e escalável |
gitk
|
V:5, I:33 | 1838 | gitk (1) |
explorador GUI de repositórios Git com histórico |
git-gui
|
V:1, I:18 | 2429 | git-gui (1) |
GUI para Git (Nenhum histórico) |
git-email
|
V:0, I:10 | 1087 | git-send-email (1) |
envia uma colecção de patches como email a partir do Git |
git-buildpackage
|
V:1, I:9 | 1988 | git-buildpackage (1) |
automatiza o empacotamento Debian com o Git |
dgit
|
V:0, I:1 | 473 | dgit (1) |
git interoperability with the Debian archive |
imediff
|
V:0, I:0 | 200 | git-ime (1) |
interactive git commit split helper tool |
stgit
|
V:0, I:0 | 601 | stg (1) |
quilt no topo do git (Python) |
git-doc
|
I:12 | 13208 | N/D | documentação oficial para o Git |
gitmagic
|
I:0 | 721 | N/D | "Magia do Git", guia fácil de compreender para o Git |
Pode desejar definir várias configurações globais em
"~/.gitconfig
" como o seu nome e endereço de mail usado
pelo Git com o seguinte.
$ 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
Se está muito acostumado aos comandos do CVS ou Subversion, pode desejar definir nomes alternativos a vários comandos com o seguinte.
$ git config --global alias.ci "commit -a" $ git config --global alias.co checkout
Pode verificar a sua configuração global com o seguinte.
$ git config --global --list
Git operation involves several data.
The working tree which holds user facing files and to which you make changes.
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.
Tabela 10.12. Main Git commands
Git command | função |
---|---|
git init |
cria o repositório (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.
Tabela 10.13. Git tips
Git command line | função |
---|---|
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 remote update upstream |
fetch updates of all remote branches in the upstream
repository |
git fetch upstream foo:upstream-foo |
create a local (possibly orphan) upstream-foo branch as a
copy of foo branch in the upstream
repository |
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 |
create a new unconnected branch |
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.) |
Atenção | |
---|---|
Não use a string de etiqueta (tag) com espaços nela, mesmo que algumas
ferramentas como o |
Cuidado | |
---|---|
If a local branch which has been pushed to remote repository is rebased or
squashed, pushing this branch has risks and requires
|
Cuidado | |
---|---|
Invocar um sub-comando |
Dica | |
---|---|
If there is a executable file |
Veja o seguinte.
manual: git(1)
(/usr/share/doc/git-doc/git.html
)
Manual do Utilizador do Git
(/usr/share/doc/git-doc/user-manual.html
)
Um tutorial de introdução ao
git (/usr/share/doc/git-doc/gittutorial.html
)
Um tutorial de introdução ao
git: parte dois
(/usr/share/doc/git-doc/gittutorial-2.html
)
Everyday GIT With 20 Commands
Or So (/usr/share/doc/git-doc/giteveryday.html
)
Magia do Git
(/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.
Tabela 10.14. List of other version control system tools
pacote | popcon | tamanho | ferramenta | Tipo VCS | comentário |
---|---|---|---|---|---|
mercurial
|
V:5, I:32 | 2019 | Mercurial | distribuído | DVCS em Python e algum C |
darcs
|
V:0, I:5 | 34070 | Darcs | distribuído | DVCS com álgebra inteligente de patches (lento) |
bzr
|
I:8 | 28 | GNU Bazaar | distribuído | DVCS influenced by tla written in Python (historic) |
tla
|
V:0, I:1 | 1022 | GNU arch | distribuído | DVCS mainly by Tom Lord (historic) |
subversion
|
V:13, I:72 | 4837 | Subversion | remoto | "CVS done right", newer standard remote VCS (historic) |
cvs
|
V:4, I:30 | 4753 | CVS | remoto | previous standard remote VCS (historic) |
tkcvs
|
V:0, I:1 | 1498 | CVS, … | remoto | ecrã GUI de árvores de repositório VCS (CVS, Subversion, RCS) |
rcs
|
V:2, I:13 | 564 | RCS | local | "Unix SCCS done right" (historic) |
cssc
|
V:0, I:1 | 2044 | CSSC | local | clone of the Unix SCCS (historic) |
[4] A write-once media such as CD/DVD-R can prevent overwrite accidents. (See Secção 9.8, “Os dados binários” 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.