Dúvida sobre Script apontando para Pasta com Nome Composto

1. Dúvida sobre Script apontando para Pasta com Nome Composto

Luiz Correia Jr
luizcorreiajr

(usa Debian)

Enviado em 05/03/2013 - 13:41h

Olá a todos!!! Tenho um script que precisa fazer a cópia de backup, onde a origem dos arquivos é referenciada numa variável (PASTA_ORIG) que recebe o valor do caminho de uma pasta com nome composto (VirtualBox VMs) e também os arquivos de destino deste backup referenciam outra variável (PASTA_DEST) contendo o caminho para outra pasta que também tem o nome composto (VirtualBox VMs). Preciso da sintaxe correta para alimentar a variável que tem o caminho de origem e para outra variável que tem o caminho de destino, pois devido o nome composto, não consigo com que o script seja corretamente interpretado.

As Variáveis:
* PASTA_ORIG
* PASTA_DEST

Darei exemplos do que já tentei usar:

PASTA_ORIG=/home/junior/"VirtualBox VMs"/

PASTA_ORIG="/home/junior/VirtualBox VMs/"

PASTA_ORIG="/home/junior/VirtualBox\ VMs/"

PASTA_ORIG=/home/junior/"VirtualBox\ VMs"/

PASTA_ORIG=/home/junior/`VirtualBox\ VMs`/

PASTA_ORIG=`/home/junior/VirtualBox VMs/`


Eis o script:

1 #!/bin/bash
2
3 LOG=/home/junior/BackupLogs/`date +%Y-%m-%d`_log-Documentos.txt
4
5 echo ">|-------------------- I N I C I O ---------------------" >> $LOG
6 INICIO=`date +%d/%m/%Y-%H:%M:%S`
7 PASTA_ORIG=/home/junior/"VirtualBox VMs"/
8 PASTA_DEST=/home/junior/hdext/BkpVostro110/"VirtualBox VMs"/
9 echo "ORIG= $PASTA_ORIG"
10 echo "DEST= $PASTA_DEST"
11 echo " INICIADO EM $INICIO" >> $LOG
12 echo " " >> $LOG
13 echo " Backup de $PASTA_ORIG" >> $LOG
14 echo " CÓPIA DOS ARQUIVOS DO BACKUP QUE FORAM SUBSTITUIDOS: " >> $LOG
15 echo " " >> $LOG
16 rsync -PavEz --compare-dest=$PASTA_ORIG $PASTA_DEST /home/junior/hdext/bkp >> "$LOG"
17 echo " " >> $LOG
18 echo " BACKUP COMPLETO " >> $LOG
19 echo " " >> $LOG
20 rsync -PavEz --delete-excluded $PASTA_ORIG $PASTA_DEST >> $LOG
21 echo " " >> $LOG
22 DUSMDOC=`du -sb $PASTA_ORIG`
23 DUSMHD=`du -sb $PASTA_DEST`
24 echo " Total de bytes nos arquivos de origem: $DUSMDOC" >> $LOG
25 echo " Total de bytes nos arquivos de destino: $DUSMHD" >> $LOG
26 echo " " >> $LOG
27 echo " " >> $LOG
28 echo " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * " >> $LOG
29 echo " BACKUP FINALIZADO EM $FINAL" >> $LOG
30 echo "-------------------------- F I M -----------------------|<" >> $LOG
31 echo " " >> $LOG



Agora o erro que tenho ao tentar rodar o script atual:

ORIG= /home/junior/VirtualBox VMs/
DEST= /home/junior/hdext/BkpVostro110/VirtualBox VMs/
rsync: link_stat "/home/junior/hdext/BkpVostro110/VirtualBox" failed: No such file or directory (2)
--compare-dest arg does not exist: /home/junior/VirtualBox
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1070) [sender=3.0.9]
rsync: link_stat "/home/junior/VirtualBox" failed: No such file or directory (2)
rsync: link_stat "/home/junior/hdext/BkpVostro110/VirtualBox" failed: No such file or directory (2)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1070) [sender=3.0.9]
du: impossível acessar "/home/junior/VirtualBox": Arquivo ou diretório não encontrado
du: impossível acessar "/home/junior/hdext/BkpVostro110/VirtualBox": Arquivo ou diretório não encontrado


Agradeço desde já o empenho aos que puderem ajudar!!!!


  


2. Re: Dúvida sobre Script apontando para Pasta com Nome Composto

Luís Fernando C. Cavalheiro
lcavalheiro

(usa Slackware)

Enviado em 05/03/2013 - 13:44h

Evite as aspas. Coloque um \ antes do espaço, mais ou menos assim:
/home/usuario/Documentos/Meus\ Documentos/Enchendo\ Totalmente\ a\ Linguiça


EDIT
Em variáveis, como é o seu caso, você precisará de um macetinho

variavel=$(echo "/home/usuario/Documentos/Meus Documentos/Enchendo Totalmente a Linguiça")

Na hora de chamar a variável, chame-a entre aspas
echo "$variavel"



3. Re: Dúvida sobre Script apontando para Pasta com Nome Composto

Paulo
paulo1205

(usa Ubuntu)

Enviado em 05/03/2013 - 16:28h

lcavalheiro escreveu:

Em variáveis, como é o seu caso, você precisará de um macetinho

variavel=$(echo "/home/usuario/Documentos/Meus Documentos/Enchendo Totalmente a Linguiça")



Não precisa desses "macetes" ou outras gambiarras. Basta fazer algo como abaixo.

VARIAVEL="qualquer coisa contendo espaços, mas aceita também `echo backquotes` e extrapolação de $variaveis." 


ou

VARIAVEL='Tudo o que vier entre apóstofos é interpretado literalmente: $, " e ` são caracteres comuns.' 


ou ainda

VARIAVEL=Posso\ entupir\ minha\ linha\ de\ \"\\\"s,\ mas\ nao\ posso\ esquecer\ que\ tempo\ é\ \$\$\$\! 


Aliás, não entendi por que motivo você recomendou evitar aspas.


Na hora de chamar a variável, chame-a entre aspas
echo "$variavel"


Isso sim é o que resolve o problema apresentado inicialmente. Eu inclusive recomendo SEMPRE colocar a avaliação de variáveis entre aspas.


4. Re: Dúvida sobre Script apontando para Pasta com Nome Composto

Luiz Correia Jr
luizcorreiajr

(usa Debian)

Enviado em 06/03/2013 - 14:35h

tentei este:
PASTA_ORIG=$(echo "/home/junior/VirtualBox\ VMs/")

E obtive ao gerar o script:
ORIG= /home/junior/VirtualBox\ VMs/
DEST= /home/junior/hdext/BkpVostro110/VirtualBox\ VMs/
rsync: link_stat "/home/junior/hdext/BkpVostro110/VirtualBox\" failed: No such file or directory (2)
--compare-dest arg does not exist: /home/junior/VirtualBox\
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1070) [sender=3.0.9]
rsync: link_stat "/home/junior/VirtualBox\" failed: No such file or directory (2)
rsync: link_stat "/home/junior/hdext/BkpVostro110/VirtualBox\" failed: No such file or directory (2)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1070) [sender=3.0.9]
du: impossível acessar "/home/junior/VirtualBox\\": Arquivo ou diretório não encontrado
du: impossível acessar "/home/junior/hdext/BkpVostro110/VirtualBox\\": Arquivo ou diretório não encontrado




tentei de outra forma:
PASTA_ORIG="/home/junior/VirtualBox\ VMs/"

E obtive ao gerar o script:
ORIG= /home/junior/VirtualBox\ VMs/
DEST= /home/junior/hdext/BkpVostro110/VirtualBox\ VMs/
rsync: link_stat "/home/junior/hdext/BkpVostro110/VirtualBox\" failed: No such file or directory (2)
--compare-dest arg does not exist: /home/junior/VirtualBox\
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1070) [sender=3.0.9]
rsync: link_stat "/home/junior/VirtualBox\" failed: No such file or directory (2)
rsync: link_stat "/home/junior/hdext/BkpVostro110/VirtualBox\" failed: No such file or directory (2)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1070) [sender=3.0.9]
du: impossível acessar "/home/junior/VirtualBox\\": Arquivo ou diretório não encontrado
du: impossível acessar "/home/junior/hdext/BkpVostro110/VirtualBox\\": Arquivo ou diretório não encontrado

Obrigado desde já péla insistência em me ajudar!


5. Re: Dúvida sobre Script apontando para Pasta com Nome Composto

Luís Fernando C. Cavalheiro
lcavalheiro

(usa Slackware)

Enviado em 06/03/2013 - 16:36h

Meu querido, se você usar aspas na definição da variável você não deveria usar o \...


6. Re: Dúvida sobre Script apontando para Pasta com Nome Composto

Luiz Correia Jr
luizcorreiajr

(usa Debian)

Enviado em 07/03/2013 - 16:22h

Conforme sua orientação tirei então o "\"

carregando a variável com a seguinte sintaxe:
PASTA_ORIG="/home/junior/VirtualBox VMs/"

Erro apresentado:
ORIG= /home/junior/VirtualBox VMs/
DEST= /home/junior/hdext/BkpVostro110/VirtualBox VMs/
rsync: change_dir "/home/junior/hdext/BkpVostro110" failed: No such file or directory (2)
--compare-dest arg does not exist: /home/junior/VirtualBox
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1070) [sender=3.0.9]
rsync: link_stat "/home/junior/VirtualBox" failed: No such file or directory (2)
rsync: change_dir "/home/junior/hdext/BkpVostro110" failed: No such file or directory (2)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1070) [sender=3.0.9]
du: impossível acessar "/home/junior/VirtualBox": Arquivo ou diretório não encontrado
du: impossível acessar "/home/junior/hdext/BkpVostro110/VirtualBox": Arquivo ou diretório não encontrado.


7. diretorio com nome composto

Cesar Guariglia
reimago

(usa Slackware)

Enviado em 02/05/2016 - 16:37h

Eu tive esse problema e quase fiquei louco. depois descobri que somente colocando um * após o primeiro e o segundo resolveu meu problema.

....
caminho="usuario@fool.dyndns.biz:/drive/c/aurum*software"

De tudo que eu tentei, e vi aqui acima, somente assim consegui sucesso.





8. Re: Dúvida sobre Script apontando para Pasta com Nome Composto

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 02/05/2016 - 18:04h

escreveu:

Olá a todos!!! Tenho um script que precisa fazer a cópia de backup, onde a origem dos arquivos é referenciada numa variável (PASTA_ORIG) que recebe o valor do caminho de uma pasta com nome composto (VirtualBox VMs) e também os arquivos de destino deste backup referenciam outra variável (PASTA_DEST) contendo o caminho para outra pasta que também tem o nome composto (VirtualBox VMs). Preciso da sintaxe correta para alimentar a variável que tem o caminho de origem e para outra variável que tem o caminho de destino, pois devido o nome composto, não consigo com que o script seja corretamente interpretado.

As Variáveis:
* PASTA_ORIG
* PASTA_DEST

Darei exemplos do que já tentei usar:

PASTA_ORIG=/home/junior/"VirtualBox VMs"/

PASTA_ORIG="/home/junior/VirtualBox VMs/"

PASTA_ORIG="/home/junior/VirtualBox\ VMs/"

PASTA_ORIG=/home/junior/"VirtualBox\ VMs"/

PASTA_ORIG=/home/junior/`VirtualBox\ VMs`/

PASTA_ORIG=`/home/junior/VirtualBox VMs/`


Eis o script:

1 #!/bin/bash
2
3 LOG=/home/junior/BackupLogs/`date +%Y-%m-%d`_log-Documentos.txt
4
5 echo ">|-------------------- I N I C I O ---------------------" >> $LOG
6 INICIO=`date +%d/%m/%Y-%H:%M:%S`
7 PASTA_ORIG=/home/junior/"VirtualBox VMs"/
8 PASTA_DEST=/home/junior/hdext/BkpVostro110/"VirtualBox VMs"/
9 echo "ORIG= $PASTA_ORIG"
10 echo "DEST= $PASTA_DEST"
11 echo " INICIADO EM $INICIO" >> $LOG
12 echo " " >> $LOG
13 echo " Backup de $PASTA_ORIG" >> $LOG
14 echo " CÓPIA DOS ARQUIVOS DO BACKUP QUE FORAM SUBSTITUIDOS: " >> $LOG
15 echo " " >> $LOG
16 rsync -PavEz --compare-dest=$PASTA_ORIG $PASTA_DEST /home/junior/hdext/bkp >> "$LOG"
17 echo " " >> $LOG
18 echo " BACKUP COMPLETO " >> $LOG
19 echo " " >> $LOG
20 rsync -PavEz --delete-excluded $PASTA_ORIG $PASTA_DEST >> $LOG
21 echo " " >> $LOG
22 DUSMDOC=`du -sb $PASTA_ORIG`
23 DUSMHD=`du -sb $PASTA_DEST`
24 echo " Total de bytes nos arquivos de origem: $DUSMDOC" >> $LOG
25 echo " Total de bytes nos arquivos de destino: $DUSMHD" >> $LOG
26 echo " " >> $LOG
27 echo " " >> $LOG
28 echo " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * " >> $LOG
29 echo " BACKUP FINALIZADO EM $FINAL" >> $LOG
30 echo "-------------------------- F I M -----------------------|<" >> $LOG
31 echo " " >> $LOG



Agora o erro que tenho ao tentar rodar o script atual:

ORIG= /home/junior/VirtualBox VMs/
DEST= /home/junior/hdext/BkpVostro110/VirtualBox VMs/
rsync: link_stat "/home/junior/hdext/BkpVostro110/VirtualBox" failed: No such file or directory (2)
--compare-dest arg does not exist: /home/junior/VirtualBox
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1070) [sender=3.0.9]
rsync: link_stat "/home/junior/VirtualBox" failed: No such file or directory (2)
rsync: link_stat "/home/junior/hdext/BkpVostro110/VirtualBox" failed: No such file or directory (2)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1070) [sender=3.0.9]
du: impossível acessar "/home/junior/VirtualBox": Arquivo ou diretório não encontrado
du: impossível acessar "/home/junior/hdext/BkpVostro110/VirtualBox": Arquivo ou diretório não encontrado
Agradeço desde já o empenho aos que puderem ajudar!!!!


Boa noite luizcorreiajr.
DECLARE a VAR com aspas duplas.
CHAME a "$VAR" COM aspas duplas.
EXEMPLO:
DIR="DIR COM ESPACO"
ls -l $DIR
ls: não é possível acessar DIR: Arquivo ou diretório não encontrado
ls: não é possível acessar COM: Arquivo ou diretório não encontrado
ls: não é possível acessar ESPACO: Arquivo ou diretório não encontrado

l
s -l "$DIR"
total 0
-rw-r--r-- 1 marcelo marcelo 0 Mai 2 17:57 Arquivo_vazio


Att.:
Marcelo Oliver







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts