Como copiar muitos CDs e DVDs para um HD de forma automática?

1. Como copiar muitos CDs e DVDs para um HD de forma automática?

Marcio Flosi Malgueiro
Flosi

(usa Debian)

Enviado em 13/03/2019 - 12:18h

Bom dia pessoal.

Sou leigo em linux, sempre só usei o básico mas estou precisando resolver um problema e espero que alguém possa me ajudar.
Preciso copiar cerca de 300 CDs e DVDs de arquivos antigos para o HD de uma máquina que está com OpenmediaVault instalado, existe alguma forma de fazer isso automaticamente?
Seria perfeito se ao eu inserir o disco no leitor a cópia iniciasse sozinha e ao final, o disco fosse ejetado para que eu pudesse inserir o próximo.

Desde já agradeço.



  


2. Re: Como copiar muitos CDs e DVDs para um HD de forma automática?

Giovanni  M
Giovanni_Menezes

(usa Devuan)

Enviado em 13/03/2019 - 13:13h

Tenta fazer um script, abra manualmente pela primeira vez e coloque o cd/dvd e depois execute um script

A ordem vai ser a seguinte:



1-Fechar bandeja
1.1-"Montar o dispositivo se necessário"
2-cp origem / destino
3-Abrir bandeja/desmontar
4-sleep ai de uns 8 segundos

Você usa um if ou um for para repetir X vezes, e no terminal você para qualquer script apertando control + C


--------------------------------------------------------------------------
Somente o Software Livre lhe garante as 4 liberdades.
Open Source =/= Free Software.
https://encurtador.com.br/CGNU5
http://www.anahuac.eu/contrarrevolucao-osi/

***Experimente o Devuan Gnu/Linux***
https://devuan.org/

***Pensando em investir em bitcoins ? veja este vídeo***
https://www.youtube.com/watch?v=jhBE3MUFxQU


3. Re: Como copiar muitos CDs e DVDs para um HD de forma automática?

Marcio Flosi Malgueiro
Flosi

(usa Debian)

Enviado em 13/03/2019 - 14:32h

Giovanni_Menezes escreveu:

Tenta fazer um script, abra manualmente pela primeira vez e coloque o cd/dvd e depois execute um script

A ordem vai ser a seguinte:



1-Fechar bandeja
1.1-"Montar o dispositivo se necessário"
2-cp origem / destino
3-Abrir bandeja/desmontar
4-sleep ai de uns 8 segundos

Você usa um if ou um for para repetir X vezes, e no terminal você para qualquer script apertando control + C


--------------------------------------------------------------------------
Somente o Software Livre lhe garante as 4 liberdades.
Open Source =/= Free Software.
https://encurtador.com.br/CGNU5
http://www.anahuac.eu/contrarrevolucao-osi/

***Experimente o Devuan Gnu/Linux***
https://devuan.org/

***Pensando em investir em bitcoins ? veja este vídeo***
https://www.youtube.com/watch?v=jhBE3MUFxQU


Nunca criei um script mas parece "fácil". Vou dar uma pesquisa em algum tutorial e tentar fazer isso aí.

Obrigado


4. Re: Como copiar muitos CDs e DVDs para um HD de forma automática?

5. Re: Como copiar muitos CDs e DVDs para um HD de forma automática?

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 13/03/2019 - 15:48h

Veja isso:
https://askubuntu.com/questions/197662/how-do-i-auto-copy-cd-contents-on-insertion

EDIT:
Salve o script:
#! /bin/bash
# Wait for a CD/DVD to be inserted then copy the contents
#
echo "CD/DVD copy, press <ctrl>C to exit"
echo "Looking for disk..."
#
# Directory to salve the cd/dvd's contents
DIR=$HOME/Documentos
if [ ! -d $DIR ]; then
echo "Directory not exist"
exit 1
fi
# Go into a continuous loop always looking for a new CD/DVD
while :
do
# Get the mount point of /dev/sr0 out of the mounts file
TEST=$(grep /dev/sr0 /proc/self/mounts)
# If it doesn't exist, loop until it does with 2 second pause
if [ "$TEST" == "" ]; then
echo -ne "."
sleep 2
else
echo
# Got it! Need to strip the mount point out of the string
TEST2=${TEST:9}
set $TEST2
TEST=$1
# Do the copy process for the disk we found
echo "Copying from $TEST"
cp -vRi $TEST/* $DIR
# Eject the CD with suitable pauses to avoid any buffer problems
sleep 2
eject /dev/sr0
sleep 2
fi
# Still looping! Go back and wait for another CD!
done
exit()

Dê permissão de execução e rode-o no terminal:
chmod +x nome-do-script.sh
./nome-do-script.sh

Sempre que o CD/DVD for montado ele copiará todos os arquivos para a pasta especificada no script (altere essa parte "DIR=$HOME/Documentos" para outra localização que queira) e ejetará o CD/DVD quando terminar.


6. Re: Como copiar muitos CDs e DVDs para um HD de forma automática?

Marcio Flosi Malgueiro
Flosi

(usa Debian)

Enviado em 18/04/2019 - 14:42h

tentei usar esse script mas não está dando certo, pelo que pude entender o problema está na hora de pegar o ponto de montagem.
Quando executo o script ele mostra
Copying from /srv/dev-disk-by-label-DVD\04001
cp: cannot stat '/srv/dev-disk-by-label-DVD\04001/*': No such file or directory

Quando eu executo o comando
grep /dev/sr0 /proc/self/mounts 
no terminal ele me retorna
/dev/sr0 /srv/dev-disk-by-label-DVD\04001 iso9660 ro,relatime,norock,check=r,map=n,blocksize=2048 0 0 

No terminal eu consigo acessar o DVD pelo seguinte endereço
/dev/sr0 /srv/dev-disk-by-label-DVD\ 01/ 

o que eu estou fazendo de errado?





7. Re: Como copiar muitos CDs e DVDs para um HD de forma automática?

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 18/04/2019 - 17:28h


Flosi escreveu:

tentei usar esse script mas não está dando certo, pelo que pude entender o problema está na hora de pegar o ponto de montagem.
Quando executo o script ele mostra
Copying from /srv/dev-disk-by-label-DVD\04001
cp: cannot stat '/srv/dev-disk-by-label-DVD\04001/*': No such file or directory

Quando eu executo o comando
grep /dev/sr0 /proc/self/mounts 

no terminal ele me retorna
/dev/sr0 /srv/dev-disk-by-label-DVD\04001 iso9660 ro,relatime,norock,check=r,map=n,blocksize=2048 0 0 

No terminal eu consigo acessar o DVD pelo seguinte endereço
/dev/sr0 /srv/dev-disk-by-label-DVD\ 01/ 

o que eu estou fazendo de errado?

Boa tarde Flosi.
Poste a saída do comando:
grep '/dev/sr0' <<< $(mount) 


Att.: Marcelo Oliver


8. Re: Como copiar muitos CDs e DVDs para um HD de forma automática?

Marcio Flosi Malgueiro
Flosi

(usa Debian)

Enviado em 18/04/2019 - 17:41h

msoliver escreveu:

Boa tarde Flosi.
Poste a saída do comando:
grep '/dev/sr0' <<< $(mount) 


Att.: Marcelo Oliver


Boa tarde Marcelo,
saiu isso aqui:
/dev/sr0 on /srv/dev-disk-by-label-DVD 01 type iso9660 (ro,relatime,norock,check=r,map=n,blocksize=2048) 


EDIT
Como estava saindo o caminho correto eu coloquei o comando
grep '/dev/sr0' <<< $(mount) 
no script, substituindo o comando
grep /dev/sr0 /proc/self/mounts 
para testar aqui. só que o script entendeu o caminho como "on"
cp: cannot stat 'on*': No such file or directory 




9. Re: Como copiar muitos CDs e DVDs para um HD de forma automática?

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 18/04/2019 - 18:34h

Flosi escreveu:

msoliver escreveu:

Boa tarde Flosi.
Poste a saída do comando:
grep '/dev/sr0' <<< $(mount) 


Att.: Marcelo Oliver


Boa tarde Marcelo,
saiu isso aqui:
/dev/sr0 on /srv/dev-disk-by-label-DVD 01 type iso9660 (ro,relatime,norock,check=r,map=n,blocksize=2048) 


EDIT
Como estava saindo o caminho correto eu coloquei o comando
grep '/dev/sr0' <<< $(mount) 
no script, substituindo o comando
grep /dev/sr0 /proc/self/mounts 
para testar aqui. só que o script entendeu o caminho como "on"
cp: cannot stat 'on*': No such file or directory 



Estou terminando o script....
Daqui a pouco posto para vc testar...
EDIT . . .:
Terminei
PARECE QUE ESTÁ CORRIGIDO, Tem que pegar o 01...
Vc tem mais que 1 unidade de CD DVD?


#! /bin/bash
count=0
clear;

KEY=""
cols=$(tput cols)
Mcols=$((cols/2))

line() { printf '%*s' "$1" '' | sed "s/ /=/g";}

printf "\e[2f $(line ${Mcols}) \e[3f Para sair, tecle [Ss]air \e[4f $(line ${Mcols})\e[6f CD/DVD cópia, Aguardando pelo DVD/CD . . .\n"

DIR=$HOME/Downloads/COPIAS/
[[ -d $DIR ]] || { echo "$DIR não existe, será criado.";mkdir ${DIR};}

stty -echo -icanon min 0
while :;do
[[ ${KEY} =~ ([Ss]) ]] && break
TEST="$(awk '/\/dev\/sr0/ {print $3,$4}' <<< $(mount))"
if [ "${TEST}" == "" ]; then
printf "\e[8f $(line 51) \e[9f %()T => DVD/CD Não Montado: Aguardando . . .\e[10f $(line 51)\n";
sleep 2.5
else
let count++;
sed -ri '/^count=[0-9]+$/s/.*/count='${count}'/' $0;
DEST="${DIR}DVD_${count}";mkdir "${DEST}";
printf "\e[8f$(line $cols) \e[9f Copiando ${TEST} => ${DEST} Cópia nº $count \e[10f$(line $cols)\n";
cp -vRi ${TEST} ${DEST};
wait;
printf "\e[9f ** Cópia concluída Ejetando ** ${TEST[2]}\n"
eject /dev/sr0
sleep 2.5
fi
read KEY
done
stty sane



IMPORTANTE: => echo -e "$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')"
Att.: Marcelo Oliver


10. Re: Como copiar muitos CDs e DVDs para um HD de forma automática?

Marcio Flosi Malgueiro
Flosi

(usa Debian)

Enviado em 18/04/2019 - 19:38h

Terminei

#! /bin/bash
clear;
count=0;
KEY=""
COLS=$(tput cols)

line() { printf '%*s' "$((COLS/2))" '' | sed "s/ /=/g";}

printf "\e[2f $(line) \e[3f Para sair, tecle [Ee]xit \e[4f $(line) \e[6f CD/DVD cópia, Aguardando pelo DVD/CD..."

DIR=$HOME/Downloads/CDS_DVDS/
if [ ! -d $DIR ]; then
echo "Directory not exist"
mkdir ${DIR}
fi

stty -echo -icanon min 0
while :;do
[[ ${KEY} =~ ([Ee]) ]] && break
TEST=($(grep '^/dev/sr0' <<< $(mount) ))
if [ "${TEST[2]}" == "" ]; then
printf "\e[8f %()T \e[9f DVD/CD Não Montado: Aguardando . . .\n";
sleep 2.5
else
let count++;
echo -e "\n CD/DVD nº $count\n Os dados de ${TEST[2]}, Serão copiados para ${DIR}\n";
cp -vRi ${TEST[2]} $DIR
wait;
echo -e "Cópia concluída\n Ejetando CD/DVD\n"
eject /dev/sr0
sleep 2.5
fi
read KEY
done
stty sane


Não deu certo, está aparecendo isso
cp: cannot stat '/srv/dev-disk-by-label-DVD': No such file or directory 


não entendi isso:
IMPORTANTE: => echo -e "$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')"





11. Re: Como copiar muitos CDs e DVDs para um HD de forma automática?

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 18/04/2019 - 20:37h

Flosi escreveu:

Terminei

 


Não deu certo, está aparecendo isso
cp: cannot stat '/srv/dev-disk-by-label-DVD': No such file or directory 


não entendi isso:
IMPORTANTE: => echo -e "$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')"


Isso é uma mensagem que tem no Viva o Linux.
Execute o comando:
echo -e "$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')"
E vai ver a mensagem . . . .
Requer o lynx instalado . . .
Vou postar agora com uma correção.


VEJA => echo -e "$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')"
Att.: Marcelo Oliver


12. Re: Como copiar muitos CDs e DVDs para um HD de forma automática?

Marcio Flosi Malgueiro
Flosi

(usa Debian)

Enviado em 03/05/2019 - 13:10h

Consegui filtrar o resultado do "blkid" com o seguinte comando:
grep /dev/sr0 <<< $(blkid) | awk -F"=" '{print $3}' | awk -F" " '{print $1,$2}' | sed -e 's/\"//g' | sed -e 's/\ //g' 


Msoliver, não usei o seu script na integra pois não estava me entendendo com ele, muito avançado para mim mas muito obrigado, ajudou de mais =D

o Script final que eu estou usando ficou assim:


#! /bin/bash

echo "Vou te ajudar com a copia de multiplos CD/DVDs!"
sleep 1
echo "Aguardando o disco"

while :
do

TESTE=$(grep '/dev/sr0' <<< $(blkid))
if [ "$TESTE" == "" ]; then
echo -ne ". "
sleep 1
else
V1=$(grep /dev/sr0 <<< $(blkid) | awk -F"=" '{print $3}' | awk -F" " '{print $1,$2}' | sed -e 's/\"//g' | sed -e 's/\ //g')
sleep 1

DIR=/media/cdrom/$V1
[[ -d $DIR ]] || { echo "$DIR nao existe, sera criado.";mkdir ${DIR};}

echo "Montando disco $V1"
mount /dev/sr0 $DIR
echo "Iniciando copia"

beep -l 170 -f 2000
beep -l 130 -f 1000 -r 2 -d 130

rsync -vrt --progress $DIR /srv/dev-disk-by-label-RenovaBackup/
echo " Copia finalizada, o disco sera ejetado"

beep -l 400 -f 300
beep -l 200 -f 600 -r 2 -d 130
beep -l 200 -f 1200

eject /dev/sr0

echo "Troque o disco e tecle ENTER"

read -s -n 1 tecla
if [[ $tecla = "" ]]; then
echo "Aguarde"
eject -t
sleep 1
fi

fi
done


Eu estou copiando com RSYNC para caso alguém coloque o mesmo disco mais de uma vez ele não copie tudo de novo ou se tiver mais de um disco com o mesmo nome os arquivos não serão sobre-escritos.

Uma última dúvida, alguns disco estão com problemas de leitura, tem DVD aqui que foi gravado em 2006, e o RSYNC fica horas tentando ler alguns determinados arquivos antes de dar erro e pular para o próximo. Existem algum jeito de fazer o RSYNC pular o arquivo quando detecta o primeiro erro?



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts