我的NAS驱动器安装程序上有一个Samba共享,如下所示:
mount -t smbfs -o username=backup,password=backups_password //sharebox/SVNBackup /mnt/SVNBackup
我然后试图运行:
sudo svnadmin dump /usr/local/svn/repos/testrepo > /mnt/SVNBackup/test1.svn
但是我得到:
bash:/mnt/SVNBackup/test1.svn:权限被拒绝
备份位置设置为只接受来自用户“备份”(本地系统上不存在的用户)的访问权限,
我该如何解决这个问题? 谢谢
sudo command > outputfile不会做你的想法。 具体来说,输出文件是打开你的权限,而不是sudo用户(在这种情况下,根)。 这就是为什么当你成为root并运行这个命令的时候它会起作用 – 因为那么redirect以root身份运行,谁可以写入/ mnt / SVNBackup。 sudo以这种方式行事是必要和明智的。
find一些以root身份运行整个命令的方法; 把它放在root的cron中,或者编写一行shell脚本并用sudo调用它 ,或者find适合你的另一个修复程序。 在限制(而且稍微愚蠢)的情况下,
sudo svnadmin dump /usr/local/svn/repos/testrepo | sudo tee /mnt/SVNBackup/test1.svn
应该在stdout 和文件/mnt/SVNBackup/test1.svn产生输出。 虽然看起来很奇怪,但是如果你真的不想输出,最简单的方法可能就是去做
sudo svnadmin dump /usr/local/svn/repos/testrepo | sudo tee /mnt/SVNBackup/test1.svn > /dev/null
如果原始的svnadmin命令在STDERR上生成了一些东西,并且你也想在日志文件中使用它,那就试试
sudo svnadmin dump /usr/local/svn/repos/testrepo 2>&1 | sudo tee /mnt/SVNBackup/test1.svn > /dev/null
请注意, 2>&1是一个bash论坛,如果你的shell是一个csh变体,或者不同的东西,你需要find合适的东西。