我得到了以下脚本来在我的服务器上运行预备份内容:
#!/bin/bash
dump_name="nextcloud_$(date +%d-%m-%y_%H-%M-%S)_backup.sql"
printf "Enabling maintenance mode... "
docker exec -u www-data nextcloud_front_1 sh -c "php occ maintenance:mode --on"
printf "\nDumping database...\n"
docker exec nextcloud_database_1 sh -c 'mysqldump -u root -p$MYSQL_ROOT_PASSWORD nextcloud' | sudo tee "/data/nextcloud/database/dumps/$dump_name" > /dev/null
当我通过 SSH 手动在服务器上运行它时,它可以正常工作,但我想远程运行它:
ssh user@host 'bash -s' < script.sh
但是然后我在 printf 中得到了以下输出:
" option does not exist.
maintenance:mode [--on] [--off]
这条线导致
docker exec -u www-data nextcloud_front_1 sh -c "php occ maintenance:mode --on"
我尝试了以下操作:
docker exec -u www-data nextcloud_front_1 sh -c "php occ maintenance:mode --on"
docker exec -u www-data nextcloud_front_1 sh -c 'php occ maintenance:mode --on'
docker exec -u www-data nextcloud_front_1 php occ maintenance:mode --on
另外,运行:
docker exec -u www-data nextcloud_front_1 echo 'php occ maintenance:mode --on'
输出符合预期
php occ maintenance:mode --on
所以我真的不知道错误来自哪里......
答案1
我在我的转储名称末尾发现了一个“?”,原来这是 Windows 上的 Notepad++ 引起的 ^M 字符(我在 Windows 上工作真是可笑)
冉
dos2unix script.sh
目前一切运行良好。