Isso está me levando a NUTS. Qualquer ajuda apreciada!
$MYSQLDUMP --login-path=$HOST $DATABASE > "$BACKUP_DIR/${HOST}__${DATABASE}__${NOW}.sql";
- Confirmei que o binário
$MYSQLDUMP
(dentro do script) tem um caminho completo válido
- O comando está completo (confirmado via echo)
-
$NOW
é definido no início do script, e não aqui ... então o tempo não está mudando em nós ou qualquer coisa
- Isso não está sendo executado via cron
- O usuário que está executando o script pela linha de comando também tem acesso / permissões ao diretório real
- Tentei
dos2unix
para garantir que não haja caracteres estranhos. Eu estou em um Mac, mas ei ... por que não
- Tentativa de escapar do
>
like \>
, que, em vez disso, produz um erro mysqldump: Couldn't find table: ">"
Isso está me deixando louco. Não tem certeza do que estou sentindo falta aqui? Estamos apenas direcionando a saída, e eu sinto que é algo ridiculamente óbvio que estou negligenciando.
ATUALIZAÇÃO
Adicionamos mais alguns testes para depurar e ajudar aqui.
vrb "\$BACKUP_DIR: $BACKUP_DIR"
vrb "whoami $(whoami)"
vrb "ls -ld \"$BACKUP_DIR/\" $(ls -ld \"$BACKUP_DIR/\")"
vrb "absolute path of user's home dir: $(cd ~/; pwd)"
vrb "absolute path of \$BACKUP_DIR: $(cd $BACKUP_DIR/; pwd)"
... produz ...
20160713T210808Z: $BACKUP_DIR: ~/www/__MYSQL/backup
20160713T210808Z: whoami william
ls: "~/www/__MYSQL/backup/": No such file or directory
20160713T210808Z: ls -ld "~/www/__MYSQL/backup/"
20160713T210808Z: absolute path of user's home dir: /Users/william
./mygration.sh: line 383: cd: ~/www/__MYSQL/backup/: No such file or directory
20160713T210808Z: absolute path of $BACKUP_DIR: >> ERROR: 1
vrb
é apenas outra função que processa a saída detalhada no script, portanto, não se assuste com isso. É apenas para produzir as informações depuradas.
Se eu listar manualmente o conteúdo no mesmo terminal para ~/www/__MYSQL/backup/
, posso ver o seguinte:
$ ls -la ~/www/__MYSQL/backup/
total 0
drwxr-xr-x 2 william staff 68 Jul 13 20:55 .
drwxr-xr-x 6 william staff 204 Jul 13 20:55 ..
É estranho. Quase como Bash não tem acesso, mas o meu usuário regular (aquele que executa o script bash em primeiro lugar) faz.
OUTRA ATUALIZAÇÃO
echo $(whoami);
echo ~;
exit;
... produz ...
william
/Users/william