diff --git a/copy b/copy index 0686b3994cb..cdd47f41c83 100755 --- a/copy +++ b/copy @@ -66,11 +66,15 @@ if dest: if not os.path.exists(src): exit_kv(rc=1, failed=1, msg="Source %s failed to transfer" % (src)) -# raise an error if copy has no permission on dest -if not os.access(dest, os.W_OK): - exit_kv(rc=1, failed=1, msg="Destination %s seems not writable" % (dest)) -elif not os.access(dest, os.R_OK): - exit_kv(rc=1, failed=1, msg="Destination %s seems not readable" % (dest)) +if os.path.exists(dest): + # raise an error if copy has no permission on dest + if not os.access(dest, os.W_OK): + exit_kv(rc=1, failed=1, msg="Destination %s not writable" % (dest)) + elif not os.access(dest, os.R_OK): + exit_kv(rc=1, failed=1, msg="Destination %s not readable" % (dest)) +else: + if not os.access(os.path.dirname(dest), os.W_OK): + exit_kv(rc=1, failed=1, msg="Destination %s not writable" % (dest)) md5sum = None changed = False