Originalmente, mv(1)
era uma operação de renomeação; atualizava nomes em sistemas de arquivos e não copiava arquivos. Mais recentemente, um recurso de conveniência foi adicionado, pelo qual se a origem e o destino estivessem em sistemas de arquivos diferentes, ele copiaria e excluiria os arquivos. Também conhecido como "inter-device move".
Agora eu estava tentando arrumar meus backups. Eu queria mudar .../rest2/Public/Backups
para .../rest2/Backup/(Backups)
, então:
root@ts412:/QNAP/mounts/rest2# mv Public/Backups Backup/
Onde:
root@ts412:/QNAP/mounts/rest2# df -h /QNAP/mounts/rest2/Public/
Filesystem Size Used Avail Use% Mounted on
/dev/sdb10 831G 715G 75G 91% /QNAP/mounts/rest2
root@ts412:/QNAP/mounts/rest2# df -h /QNAP/mounts/rest2/Backup/
Filesystem Size Used Avail Use% Mounted on
/dev/sdb10 831G 715G 75G 91% /QNAP/mounts/rest2
Então, o mesmo sistema de arquivos:
(Para sua informação, rest2
é "o resto do espaço em disk2
")
Mas a mudança começou a se comportar como uma "mudança entre dispositivos" (alta CPU, discos ocupados, vários erros sobre diretórios não vazios etc.), então eu a eliminei.
Verificando de uma forma ligeiramente diferente (observe o .
):
root@ts412:/QNAP/mounts/rest2# df -h Backup/.
Filesystem Size Used Avail Use% Mounted on
/dev/sdb10 831G 715G 75G 91% /QNAP/mounts/rest2
root@ts412:/QNAP/mounts/rest2# df -h Public/Backups/.
Filesystem Size Used Avail Use% Mounted on
/dev/sdb10 831G 715G 75G 91% /QNAP/mounts/rest2/Public
Então eu lembro que EU TAMBÉM tinha um bind mount (ele torna os nomes compartilhados via NFS mais amigáveis). Então eu desmontei o bind mount extra:
root@ts412:/QNAP/mounts/rest2# umount /QNAP/mounts/rest2/Public
root@ts412:/QNAP/mounts/rest2# df -h Public/Backups/.
Filesystem Size Used Avail Use% Mounted on
/dev/sdb10 831G 715G 75G 91% /QNAP/mounts/rest2
root@ts412:/QNAP/mounts/rest2# mv Public/Backups Backup/
E mv(1)
foi instantâneo, como eu esperava.
Então, apesar dos s extras mount(8)
, a fonte e o alvo sempre estavam no mesmo sistema de arquivos , o que mount -o bind /QNAP/mounts/rest2/Backups /Backups
não afeta isso. Então, estou pensando se mv(1)
obtém pontos de montagem de volta /QNAP/mounts/rest2
para um e /QNAP/mounts/rest2/Public
para o outro, ele decide incorretamente que os dois arquivos estão em sistemas de arquivos diferentes?