Copie arquivos entre dispositivos, com a máxima segurança, usando o grsync

O Grsync é uma interface gráfica para o programa de cópias rsync, desenvolvida em GTK2.
Até o momento, suporta os recursos mais importantes do rsync da linha de comando e é indicado para realizar sincronização de diretórios locais.

Pode ser chamado da interface gráfica, como qualquer outro programa e tem versões para Windows, Mac e Linux.

Se preferir executar da linha de comando (CLI), é possível especificar uma determinada sessão a ser carregada, em vez da sessão padrão.
Se nenhum parâmetro for dado, na CLI, ele carrega a última tarefa realizada, o que facilita a vida de quem sempre usa o rsync de uma só maneira, para copiar os mesmos arquivos para o mesmo destino.

Como instalar o Grsync

Usuários Windows e Mac, vejam os links de download ao final do post.

Para a turma do Linux, o aplicativo faz parte dos repositórios (lojas) oficiais das principais distribuições.
Debian Ubuntu Instalar programas

Será fácil encontrá-lo no seu gerenciador/instalador de programas (ou loja de apps).
Instalação do grsync

Quem prefere a linha de comando, pode usar o apt (Debian/Ubuntu):


sudo apt install grsync

Como usar o Grsync

Basicamente, tudo o que se precisa fazer é indicar a pasta/diretório de origem e o destino.
Claro que há uma série de outras opções de ajustes para as suas cópias saírem de acordo com as suas necessidades.
A interface está quase toda traduzida para o português, o que facilita fazer suas escolhas, quanto ao modo de operação do programa.
Tela do Grsync

Você pode passar o cursor do mouse sobre as alternativas do painel, para obter uma ajuda sensível ao contexto, através de uma pop up box.
O painel de opções avançadas apresenta itens de segurança de dados durante a cópia e um espaço, semelhante à linha de comando, para personalizar suas opções.

Durante a execução, o Grsync exibe o andamento das cópias individuais (no caso de vários arquivos) e no decurso total da tarefa.

Não há nada que o Grsync faça que não seja possível realizar, com mais flexibilidade e controle, na linha de comando com o rsync.
Mas é uma aplicação alternativa e excelente para quem prefere usar a GUI para transferência de arquivos.

Se quiser saber mais sobre o rsync, leia aqui.

Referências

Página de download da versão para Windows: http://grsync-win.sourceforge.net/
Página de download da versão para Mac: http://grsync-mac.tuxfamily.org/?lang=en

Como monitorar a transferência de dados durante a cópia ou backup.

Sistemas operacionais UNIX ou GNU/Linux possuem um comando de cópia tradicional para a CLI: o cp.
Quando há vários arquivos para transferir de um diretório a outro, é possível acompanhar a finalização da transferência de cada um deles.

Mas só ficamos sabendo da finalização individual de cada cópia de arquivo.
Na GUI (ambiente gráfico), para quem usa um gerenciador de arquivos, também é possível acompanhar o progresso da transferência, com um nível mais elevado de exibição de informações.
elias praciano gnome nautilus
Na CLI, contudo, o comando cp, não permite obter este detalhamento do progresso da transferência dos seus arquivos.
mostrei como “atualizar” o comando cp, para forçar a exibição destas informações em outro post.
Neste, vou mostrar como obter o resultado com o utilitário pv.
Como não faz parte da instalação padrão da maioria das distribuições Linux, ele precisa ser instalado.
Por sorte, faz parte dos repositórios das grandes distribuições (Fedora, OpenSUSE, Debian, Ubuntu etc.)
Use o seu gerenciador de pacotes predileto para obtê-lo (yum, dnf, apt etc.)

Como funciona o pv

O pv é um utilitário para monitorar a transferência de dados.
Com ele, é possível obter informações sobre o percentual que ainda falta da tarefa a ser completada (com uma barra de progresso), o tempo de conclusão (estimado), a taxa de transferência, total de dados transferidos etc.
O pv é usado como pipeline (encanamento) entre dois processos.
Pode ser usado para monitorar o fluxo de dados local ou remotamente.
Eu sugiro o seu uso dentro de scripts, para dar retorno visual mais agradável sobre o progresso das atividades realizadas.

Exemplos de uso do pv

linux tranferencia de arquivo com comando pv
Para monitorar, enquanto faz a cópia de um arquivo, forneça a localização, o nome do arquivo de origem e do arquivo de destino:

pv origem > destino

Para copiar o arquivo-1.mp4 para dentro de um flash drive (montado no diretório Yellow), por exemplo:


pv arquivo-1.mp4 > /media/justincase/Yellow/arquivo-1.mp4

 355MiB 0:00:27 [1,36MiB/s] [=======================>          ] 73% ETA 0:00:09

No exemplo abaixo, o pv é usado para monitorar o backup dos diretórios apt/ e caching/:


tar -cjf - apt/ caching/ | (pv -p --timer --rate --bytes > backup.tar.bz)

34,5MiB 0:00:10 [2,79MiB/s] [        <=>  

Use o comando acompanhado da opção ‘-h’, para obter mais opções de uso:


pv -h


Se você está fazendo cópias de arquivos ou (des)compactando-os de dentro de um script, é possível dar um feedback visual mais atraente para o seu usuário, com o uso do comando pv.
Abaixo, um exemplo de backup do diretório ~/Documentos:


tar -czf - ~/Documentos/ | (pv -n > backup-docs.tgz) 2>&1 | dialog --gauge "Cópia de segurança do diretório Documentos" 10 70

backup whiptail
Se o utilitário whiptail não estiver presente no seu sistema, é possível usar o dialog.
No próximo exemplo, usamos o utilitário GUI, zenity:


tar -czf - ~/Documentos/ | (pv -n > backup-docs.tgz) 2>&1 | zenity --progress --text "Cópia de segurança do diretório Documentos"

backup zenity linux

Referências

https://www.tecmint.com/monitor-copy-backup-tar-progress-in-linux-using-pv-command/.

Como fazer cópias entre 2 hosts com o scp

Se você acessa pelo menos um servidor remoto via SSH, provavelmente terá utilidade para um comando de cópia, que permite trocar arquivos entre um host e outro — também através de uma conexão segura.
É isto que o comando scp faz: copia arquivos entre hosts, dentro de uma rede — com o uso do ssh, para transferência segura dos dados.
Durante o processo, o scp irá pedir a mesma senha que vocẽ usa para se autenticar via ssh — uma vez que ambos fazem parte do mesmo conjunto de ferramentas.

O comando scp, tal como o cp, irá sobrescrever arquivos no destino.
Portanto certifique-se de estar digitando a coisa certa e mantenha seus backups em dia.

Para este post, vou usar exemplos simples, em cima dos quais, você poderá construir procedimentos mais complexos, posteriormente.
Recentemente, configurei o .bashrc de uma máquina remota, para apresentar um prompt da linha comando personalizado — o que me ajuda a saber exatamente aonde estou realizando algum procedimento.
Como eu gostaria que a máquina local também tivesse um prompt customizado, pensei em usar o scp para copiar o arquivo .bashrc de lá para cá.
Tendo o nome do host remoto (tatooine, no meu caso) e sua respectiva senha, proceda assim:


scp justincase@tatooine:.bashrc ./

The authenticity of host 'tatooine (192.168.5.4)' can't be established.
RSA key fingerprint is 20:96:8d:4e:1c:d6:d5:40:e3:83:0a:f9:30:04:50:30.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'tatooine,192.168.5.4' (RSA) to the list of known hosts.
justincase@tatooine's password: 
.bashrc                                                                                           100%    0     0.0KB/s   00:00    

Na primeira conexão, as ferramentas ssh pedem confirmação (yes/no) — após o quê, a adicionam à lista de hosts conhecidos.
Você pode usar a opção ‘-r’ para copiar um diretório recursivamente, também:


scp -r justincase@tatooine:temporario/ temp/

justincase@tatooine's password:
error.log                    100% 5627     5.5KB/s   00:00     
error.log.0                  100% 6534     6.4KB/s   00:00     
error.log.2017-05-31.gz      100% 2086     2.0KB/s   00:00     
error.log.2017-06-01.gz      100% 1553     1.5KB/s   00:01     
error.log.2017-06-02.gz      100%  744     0.7KB/s   00:00     
error.log.2017-06-03         100% 7960     7.8KB/s   00:00     
error.log.2017-06-04         100% 6534     6.4KB/s   00:00     

Para copiar (ou subir) um arquivo local para um endereço remoto, use o seguinte exemplo:


scp -l 14 -C Downloads/piwigo-netinstall.php justincase@tatooine:~/

justincase@tatooine's password:
piwigo-netinstall.php                                                                      100%   15KB  14.9KB/s   00:00

No exemplo, acima, adicionei estas 2 opções:

  • -l 14 — que limita a banda em 14 Kbps. O que pode ajudar a não sobrecarregar a sua rede. Neste caso, como o arquivo tem 15 Kb, não houve diferença perceptível.
  • -C — aplica compressão ao(s) arquivo(s), em trânsito. Novamente, o comando é irrelevante para este caso (mas serve como exemplo), em virtude do tamanho ínfimo do arquivo copiado.

E se eu quiser copiar o mesmo arquivo entre dois hosts remotos — tatooine e coruscant?
A maneira mais simples de realizar este trabalho é copiando o arquivo objeto da transferência temporariamente para a máquina local — fazendo-a funcionar como intermediária da transação.
Veja como:


scp -3 jcase@tatooine:~/logs.txt jcase@coruscant:~/logs.txt


jcase@tatooine's password: jcase@coruscant's password:

Para realizar a cópia, o scp vai precisar que você forneça as senhas de cada um dos hosts.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Como copiar arquivos aleatoriamente no Linux

Copiar ou mover uma quantidade de arquivos, de um diretório no seu sistema, para outro, em ordem aleatória, tem suas utilidades.
Se você tem uma pequena caixa de som, com entrada USB ou cartão SD e quer ouvir suas músicas em ordem aleatória, misturadas ao acaso, mas não tem o botão random ou shuffle no aparelho — a solução é garantir que as músicas já estejam em ordem aleatória no seu dispositivo de armazenamento.
Este problema é interessante e possui várias formas de ser resolvido, no GNU/Linux.
Vamos conhecer algumas.
Antes de começar, contudo, recomendo copiar todas as músicas que você pretende envolver no processo para um outro diretório e fazer a operação a partir dele. Se algo der errado, as chances de perder arquivos é menor.

Use o comando shuf no Linux

Se você tem o aplicativo shuf (shuffle, quer dizer embaralhar) instalado, pode resolver o problema com uma linha de comando simples.
No exemplo abaixo, as músicas estão todas juntas em uma pasta chamada ‘origem’. Serão copiadas para a pasta ‘destino’.

shuf -zen200 origem/* | xargs -0 mv -t destino

Explicando o comando shuf -zen200 — com seus 3 parâmetros:

  • -z — finaliza cada linha (da lista de arquivos que vai ser criada na memória) com um 0 byte
  • -e — trata cada argumento como uma nova linha input
  • -n200 — determina a quantidade de linhas a ser processada. Altere o valor para quantidade de arquivos presente no seu diretório

O utilitário xargs cria e executa a linha de comando a partir da saída fornecida pelo shuf.
De acordo com o manual do xargs, a opção ‘-0’ indica que os itens terminam com um caractere null (sem valor), em vez de espaços em branco e que os (eventuais) caracteres especiais (que compõem os nomes dos arquivos) não devem ser tratados como especiais e devem ser entendidos literalmente.
Por último, a opção ‘-t’, do comando mv, indica que o nome que o segue é nome de diretório e não nome de arquivo comum.
Se você quiser ver a ação acontendo, use ‘-vt’, assim:

shuf -zen200 origem/* | xargs -0 mv -vt destino

Outra alteração que você pode fazer é substituir o comando mv (mover) por cp (copiar):

shuf -zen200 origem/* | xargs -0 cp -vt destino

Para ver os arquivos copiados, no destino, use o comando ls -tlr — com estes parâmetros, o comando ls mostra os arquivos na ordem em que foram gravados.

Lista de arquivos mp3
Clique para ver detalhes.

Use o comando find para listar, embaralhar e copiar arquivos de um diretório para outro

Uma solução equivalente envolve o comando find.
Um pouco mais complexa, porém mais flexível é voltada para usuários mais avançados.
Com esta opção é possível entrar recursivamente nos diretórios em busca de arquivos e transferi-los para dentro de outro diretório ou dispositivo de armazenamento, “totalmente desorganizados”, do jeito que eu quero.
Veja como funciona:

find origem -type f -print0 | sort -Rz | cut -d $'\0' -f-200 | xargs -0 cp -nvt destino

Se você quiser entender melhor o comando find, leia alguns artigos que contém exemplos dele.

Como renomear os arquivos aletoriamente

O que resta saber, agora, é se o seu mp3 player “físico” toca os arquivos na ordem em que se encontram na mídia de armazenamento ou se os toca em ordem alfabética (ou qualquer outra).
No meu caso, os arquivos são tocados na ordem em que foram gravados.
Se este não for o seu caso e se seus arquivos seguem o padrão de ter em seus nomes a identificação do cantor/banda etc. tudo o que fizemos até aqui, provavelmente terá sido inútil.
O meu player (velhinho) não exibe no visor o nome do arquivo que está tocando.
Esta característica torna os nomes dos arquivos irrelevantes, quando conecto uma mídia de armazenamento nele.
Portanto, se eu renomear todos os meus arquivos mp3 aleatoriamente, vou obter o mesmo resultado: tocá-los aleatoriamente.
A linha de comando, que segue, altera os nomes de arquivos usando o sha1sum, para gerar códigos aleatórios.
Recomendo copiar seus arquivos para um diretório temporário antes de executar o próximo comando — uma vez que ele impossibilitará saber “quem é quem” no diretório, depois que alterar todos os nomes (veja o resultado, na imagem abaixo).
nomes de arquivos aleatórios
Entre no diretório contendo seus arquivos e execute o seguinte:

for fname in *.mp3; do mv -v "$fname" $(echo "$fname" | sha1sum | cut -f1 -d' ').mp3; done

Agora copie os arquivos pro pendrive ou cartão SD e veja se funcionou!

Referência: http://unix.stackexchange.com/questions/38335/best-method-to-collect-a-random-sample-from-a-collection-of-files

Como acessar seus arquivos no servidor FTP com net2ftp

O net2ftp é um webapp cliente FTP que possibilita às pessoas acessar os arquivos no servidor, do navegador, sem a necessidade de instalar qualquer aplicativo extra.
Se você acessar o site oficial do net2ftp, vai ver um formulário, pedindo o endereço do servidor FTP que você deseja acessar, nome de usuário e senha — você pode acessar qualquer servidor do mundo, desde você tenha uma conta lá.
Captura de tela do net2ftp
A idéia, aqui, é que você instale o software do net2ftp (Ei! É grátis!) no seu próprio servidor FTP, em casa ou na empresa, para tornar o acesso mais rápido.
Qualquer dispositivo que possa navegar na Internet (tablet, smartphone, smartTV, PlayStation etc.) poderá acessar os arquivos do seu servidor.
Do lado do servidor, você precisa de:

  • Um servidor web Apache.
  • Um servidor FTP pronto e rodando.
  • Um pouco mais do que 7.5 Mb de espaço em disco.
  • MySQL é opcional — só é necessário pra quem tem o interesse em fazer logging de atividades e estabelecer limites diários de downloads a usuários.

Ao final deste texto, há alguns links para artigos que podem te ensinar a instalar fácil um servidor Apache e FTP, caso você ainda não tenha um.

Como baixar e instalar o net2ftp

O aplicativo é escrito em PHP e usa (opcionalmente) banco de dados MySQL.
De código aberto, você pode fazer o download completo a partir do site oficial:
http://www.net2ftp.com/homepage/download.html
Feito o download (da versão completa Full), descompacte o arquivo:

unzip net2ftp_v1.0.zip

“Tecnicamente”, você não instala o net2ftp, uma vez que o conjunto de scripts que compõem a solução, já vem pronto para funcionar — basta pôr tudo no lugar certo e dar permissão de acesso às pessoas.
Após descomprimir o arquivo ZIP baixado, entre no novo diretório criado.

cd net2ftp_v1.05/

Se você pretende copiar e colar os comandos acima, certifique-se antes se o nome e a versão presentes no seu sistema correspondem ao que se encontra descrito aqui.



Em seguida, copia o conteúdo da pasta files_to_upload para dentro do diretório, no seu servidor Apache, em que o net2ftp será executado. No meu caso, é o seguinte:

sudo cp -rv files_to_upload/ /var/www/html/net2ftp

Se você quer fazer upload para um servidor remoto, veja como usar o comando wput, para isto.
Altere as permissões da pasta temp:

sudo chmod 777 /var/home/www/html/net2ftp/temp/

Depois de copiados os arquivos, basta acessar o net2ftp:

http://192.168.254.20/net2ftp/

Tela inicial do net2ftp
Clique para ampliar.

Uma vez logado ao servidor FTP, através do cliente web, net2ftp, é possível baixar e enviar arquivos ao servidor.
visão do net2ftp de dentro do navegador.
Clique para ampliar.

Esta instalação já pode ser acessada de qualquer dispositivo da sua casa, que tenha um navegador básico: smartphone, tablet, smart TV etc.