Removendo arquivos e diretórios

O comando rm é utilizado para apagar arquivos, diretórios e subdiretórios que estejam vazios ou que contenham arquivos.

Este comando deve ser utilizado com cuidado, pois quando removemos algo com rm, “foi-se”… e essa remoção pode custar um passada no RH e não vai ser para ganhar aumento de salário 😉 !

Exemplo:

# cd /tmp

# touch teste.txt

Acima, entramos no diretório /tmp e criamos um arquivo vazio chamado teste.txt. Mas decidimos que não queremos mais esse arquivo. Então, para removê-lo:

# rm teste.txt

Assim como no comando cp, o rm também pode utilizar a opção -i, que é o modo interative, para perguntar se queremos remover ou não um determinado arquivo ou diretório.

Exemplo:

# cd /tmp

# echo “Novo teste do rm” > teste.txt

# cat teste.txt
Novo teste do rm

# rm teste.txt
rm: remove regular file `teste.txt’? y

Vejam a sequência dos comandos executados:

Primeiro, entramos no /tmp; em seguida, criamos um arquivo… para isso, usamos o comando echo para jogar a mensagem dentro desse arquivo! Lembram do comando echo? Ele foi comentado há alguns posts atrás!

Depois, checamos o conteúdo do arquivo com o comando cat! Daí, resolvemos apagar o arquivo, mas pedindo uma confirmação. Então, entra em ação o comando rm, com a opção -i para perguntar se realmente queremos remover 😉 .

Como queremos… basta responder y e ele vai remover! Se depois do arquivo removido executarmos:

# cat teste.txt
cat: teste.txt: No such file or directory

Vejam… eu tentei ver o conteúdo do arquivo que apaguei, mas como não existe mais, ele reclamou que não achou o arquivo ou diretório!

Outro teste:

# ls teste.txt
ls: teste.txt: No such file or directory

Vejam que com o ls é a mesma coisa! Removi o arquivo… então ele não vai achar para listar!

Agora, para remover diretórios! Aqui, para o rm, vale a mesma regra do cp, quando eu quero copiar diretórios!!!

Ou seja, no cp, eu preciso da opção -r; e aqui, também vamos usar o -r que vai nos ajudar a remover diretórios que estejam cheios (que contenham arquivos dentro!

Exemplo:

# cp -r /etc /tmp

Copiamos o /etc para dentro do /tmp… e agora vamos removê-lo:

# cd /tmp

# rm -r etc

Vejam que não tem “/” na frente desse etc, pois é o que está dentro do diretório /tmp!

Mais uma vez, fica a dica: Tenham muita atenção ao usar o comando rm, pois uma uma vez que os arquivos e diretórios são removidos não podem mais ser recuperados, e um arquivo apagado incorretamente, pode danificar o sistema.

Vejam um exemplo – mas atenção:

NÃO FAÇAM ISSO EM CASA OU NO SERVIDOR DA EMPRESA!!!!!!!!!!!!


# rm -rf /

O comando acima, irá apagar todo o diretório / recursivamente… e ainda foi combinado com a opção f, que é force, para que ele remova sem perguntar nada. Ou seja, ele irá apagar todo o seu sistema!

Caso esse comando seja executado, é importante que você tenha um backup e repense nas políticas de acesso ao seu servidor para que ninguém saia executando esse comando 😉 !

Para finalizar o post, caso você tenha um diretório que esteja vazio, pode usar o comando rmdir. Esse comando, remove diretórios que estejam vazios, isto é, que não tenham arquivos dentro.

Exemplo:

# mkdir /tmp/lixo

# cd lixo

# cp /etc/passwd lixo

# ls lixo
passwd

# rmdir lixo
rmdir: lixo: Diretório não vazio

Na sequência de comandos acima, criamos um diretório chamado lixo dentro do /tmp e em seguida, entramos no diretório e copiamos um arquivo para dentro dele e listamos.

Quando fomos tentar remover o diretório lixo com o comando rmdir, ele não permitiu, pois o diretório contém arquivos. Para usar o comando rmdir, primeiro vamos ter que apagar os arquivos que estão dentro do diretório lixo e, ai sim, utilizar o rmdir:

# rm lixo/passwd

# ls lixo

# rmdir lixo

Agora que o diretório está vazio, o rmdir conseguiu apagar!

Para saber mais…

# man rm

# man rmdir

Anúncios

Copiando arquivos e diretórios

Neste post, vou falar sobre um comando, que é a forma mais simples de backup que existe! É o comando cp, que significa copy, ou cópia!

E ele é a forma mais simples de backup que existe, porque você está fazendo cópia de um arquivo ou diretório de um lugar para outro!

Esse comando tem a função de copiar arquivos e diretórios!!!

A sintaxe dele é:

# cp origem destino

Essa é a sintaxe tradicional! Mas para ficar mais simples, é preferível bater um papo com o comando e responder as perguntas que o comando costuma fazer para executar a ação que desejamos:

cp (copie) o que? (que é a origem) para onde? (é o destino, o local para onde quero copiar)

Essa regra de perguntas, é bem legal para ser usada com comandos… afinal de contas, o comando sempre vai esperar as nossas coordenadas para executar uma ação!

No caso do cp, a ação é copiar o que para onde!

Prática!

Criar um diretório chamado backup dentro de /mnt, e copiar um arquivo prá lá! Esse exemplo é legal porque vamos usar comandos que já foram comentados em posts anteriores:

# mkdir /mnt/backup

# cp /etc/passwd /mnt/backup

Nesse exemplo, o cp vai copiar o arquivo /etc/passwd para o /mnt/backup!

Uma coisa legal do comando cp que podemos usar… é a opção -v de verbose… ou seja.. modo detalhado! Ele vai te mostrar na tela a ação que ele fez!

Por exemplo!!

# cd /mnt/backup

# cp -v passwd
`passwd’ -> `/mnt/backup’

O que fizemos com o cp, foi simplesmente copiar o arquivo, mas mostrando na tela o que ele está copiando e para onde!

Ah, e o cp tem o poder de copiar o arquivo ou diretório para um nome diferente do original!

Isso é útil quando se vai mexer em arquivos de configuração, e aí é sempre bom ter um backup! Assim, se acontecer alguma coisa com o arquivo que está sendo trabalhado, temos o original!

Enfim… abençoados sejam os pessimistas pois eles fizeram backup 😛 !

Exemplo:

# cp /etc/ssh/sshd_config /etc/ssh/sshd_config_backup

Acima, um exemplo simples, onde eu joguei o conteúdo de /etc/ssh/sshd_config para /etc/ssh/sshd_config_backup! E o último arquivo não existia, então ele criou na hora!

Em tempo: o arquivo sshd_config, é para a configuração do serviço de acesso remoto ssh. Mais pra frente, comento sobre esse serviço em post só pra ele!

No caso do exemplo, forneci o caminho completo. Poderia ter feito assim:

# cd /etc

# cd ssh

# cp sshd_config sshd_config_backup

É a mesma coisa que fizemos anteriormente… mas é só para mostrar que não preciso estar exatamente dentro do diretório que tem o que eu quero copiar… posso copiar de qualquer lugar desde que eu forneça o caminho completo!

Uma outra opção do comando cp que é muuuuuuito importante, é a -r! Ela é usada quando eu quero copiar diretórios que tenham subdiretórios!

Exemplo:

#cp -r /etc /mnt/backup

Esse comando vai copiar o diretório /etc para dentro de /mnt/backup, incluindo os subdiretórios que existem nele!

Caso eu não coloque a opção (-r), ele não vai copiar nada, pois não foi especificado que queromo todo o diretório /etc dentro do diretóri /mnt/backup!

Exemplo:

# cp /etc /mnt/backup

Não vai copiar nada, pois o /etc é um diretório. Pode até executar um ls dentro de /mnt/backup e ver que não foi nada do /etc prá la!

Agora, se executarmos:

# cp -r /etc /mnt/backup

Ele vai copiar todo o diretório /etc para dentro de /mnt/backup, inclusive os diretórios que estão dentro de /etc!

E se realmente quisermos o conteúdo do /etc, sem o -r, temos que fazer:

# cp /etc/* /mnt/backup

E ele irá copiar tudo! O * (asterisco) indica tudo, porém esse tudo, é referente a arquivos, e não diretórios; isto é, vai omitir os diretórios… e copiar somente os arquivos!

Outra opção do cp, para ser utilizado no dia-a-dia, é a -i. Essa opção é de interative; ou seja, vai pedir a confirmação do usuário para sobrescrever um arquivo já existente!

Já ajuda a evitar desastres, pois você pode confirmar se quer sobrescrever ou não!

Exemplo:

# touch /mnt/backup/teste.txt

# touch /tmp/teste.txt

Acima, criamos 2 arquivos com o mesmo nome! Reparem que um arquivo está no /mnt/backup e outro está no /tmp!

Vamos copiar o arquivo teste.txt que está em /mnt/backup/ para /tmp, usando a opção de confirmação!

# cp -i /mnt/backup/teste.txt /tmp/
cp: sobrescrever `/tmp/teste.txt’? y

Acima, como o arquivo teste.txt já existe no /tmp, a opção -i solicita a confirmação para sobrescrever o arquivo existente.

Quer conhecer mais opções do comando cp?

# man cp

# cp –help

Até o próximo post! 😉