这是我在厨师食谱中的一块红宝石:
# if datadir doesn't exist, move over the default one
if !File.exist?("/vol/postgres/data")
execute "mv /var/lib/postgresql/9.1/main /vol/postgres/data"
end
结果是:
Executing mv /var/lib/postgresql/9.1/main /vol/postgres/data
mv: inter-device move failed: `/var/lib/postgresql/9.1/main' to `/vol/postgres/data/main'; unable to remove target: Is a directory
我知道它/vol/postgres/data
存在并且是一个目录,但它仍然尝试执行mv
. 为什么?
可以肯定的是,在同一台机器上运行以下独立 Ruby 脚本会输出“nomv”:
if !File.exist?("/vol/postgres/data")
print "mv"
else
print "nomv"
end