Significado dos limites do sistema de arquivos Crossing, - um sistema de arquivos, etc

6

Estou planejando usar o rsnapshot para fazer backup de todo o meu sistema Linux, embora eu esteja confuso com a opção -x (a mesma de one_fs in rsnapshot.conf ). A página man diz:

-x one filesystem, don't cross partitions within each backup point

Eu entendo que não é uma opção específica de rsnapshot, pois os comandos rsync, cp, tar e outros também fornecem esse recurso.

Os limites do sistema de arquivos se referem a diferentes partições? Pontos de montagem diferentes? E o que significa não "cruzar" eles?

Voltando ao meu caso, eu li muitas pessoas sugerindo usar -x com o rsnapshot, mas estou pensando se isso não comprometerá a integridade do meu backup. Eu quero fazer backup de tudo em / , incluindo /boot e /home , que residem em partições dedicadas do mesmo disco, enquanto ao mesmo tempo não quero fazer backup de arquivos e diretórios que não pertencem estritamente ao meu sistema , como /mnt , /media , etc.

Executar o comando mount no meu sistema fornece a seguinte saída. Praticamente, usando rsnapshot -x , o que será incluído e o que será deixado de fora?

/dev/sda7 on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /tmp type tmpfs (rw,noexec,nosuid)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
/dev/sda6 on /boot type ext3 (rw)
/dev/sda8 on /home type ext4 (rw)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
gvfs-fuse-daemon on /home/myuser/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=myuser)
    
por Paolo 30.12.2013 / 11:31

2 respostas

10

“Não cruze os limites do sistema de arquivos” significa “não olhe dentro dos pontos de montagem”. Um limite entre os sistemas de arquivos é um ponto de montagem. Efetivamente, isso significa “apenas atuar na partição especificada”, exceto que nem todos os sistemas de arquivos estão em uma partição. Consulte Quais pontos de montagem existem em um típico Sistema Linux?

Quando você faz um backup, você deve evitar vários sistemas de arquivos, em particular:

  • sistemas de arquivos remotos (NFS, Samba, SSHFS,…);
  • sistemas de arquivos cujo conteúdo é gerado em tempo real a partir de dados de tempo de execução ( /proc , /sys ,…);
  • sistemas de arquivos que são uma visão de outra parte da árvore de diretórios (bindfs, avfs,…);
  • sistemas de arquivos na memória contendo dados que só são válidos até a próxima reinicialização ( /tmp , /dev/shm ,…);
  • mídia removível que pode ou não estar presente a qualquer momento e não faz parte do sistema propriamente dito.

Os sistemas de arquivos para backup são apenas aqueles que correspondem ao armazenamento em disco. Muitos sistemas possuem apenas um único sistema de arquivos, montado no diretório raiz / . Você pode dizer quais sistemas de arquivos correspondem ao armazenamento em disco porque sua origem (primeira coluna intitulada "Sistema de arquivos" da saída df , primeira coluna antes on da saída mount ) é um volume de disco partição como /dev/sda1 , um volume lógico LVM como /dev/mapper/mygroup-mylogicalvolume ,…).

Existem algumas sutilezas que podem tornar mais difícil determinar quais sistemas de arquivos devem ser armazenados em backup do que apenas olhar a origem para ver se ela está no disco:

  • Volumes removíveis não devem ser salvos em backup, mesmo que estejam no disco.
  • O Linux permite que o mesmo sistema de arquivos (ou partes dele) seja montado em vários locais, com mount --bind ; apenas um deles deve ter backup.
  • Pode ser difícil enumerar todos os volumes em disco: há volumes criptografados, volumes de armazenamento distribuído, etc.

Em seu sistema, os sistemas de arquivos para backup são /dev/sda7 montados em / , /dev/sda6 montados em /boot e /dev/sda8 montados em /home . Então você deve dizer ao rsnapshot para fazer o backup desses três diretórios. Você deve quase sempre usar a opção -x com o rsnapshot.

    
por 31.12.2013 / 01:07
3

Para simplificar as coisas, vamos considerar apenas duas partições. Suponha que a execução de mount tenha produzido a seguinte saída:

/dev/sda1 on / type ext4 (rw,errors=remount-ro)
/dev/sda2 on /home type ext4 (rw)

Isto é, obviamente, totalmente irreal ( /dev não seria preenchido, toneladas de material dependem de sysfs e procfs , etc). Vamos apenas ignorar isso.

Atravessar um limite do sistema de arquivos significa mudar para um diretório no qual o sistema de arquivos subjacente (que geralmente corresponde à partição subjacente) é diferente. Normalmente, quando alguém fala sobre cruzar um limite do sistema de arquivos, eles estão falando sobre isso no contexto de percorrer a árvore de diretórios para baixo ou para cima.

Como exemplo do que quero dizer, use git . Para descobrir se um diretório é um repositório Git, git primeiro verifica se existe uma pasta chamada ".git" no diretório de trabalho atual. Se houver, é um repositório Git. Se não houver, git executará a mesma verificação no pai do diretório atual e assim por diante. Por padrão, o Git irá verificar como este todo o caminho até o limite do sistema de arquivos (ou quando ele for alcançado / ), quando desistirá e assumirá que o diretório de trabalho atual não é, de fato, um repositório Git.

Digamos que você execute git status em ~/Desktop . O Git verifica se existe um diretório ~/Desktop/.git ... não. O Git irá agora verificar o diretório pai: existe um ~/.git ? Não. Aqui está o ponto onde os limites do sistema de arquivos entram em cena: como /home é uma partição separada, em vez de verificar /home/.git , git desistirá, imprimirá um aviso no console e assumirá que o diretório de trabalho atual não é t um repositório Git. Ele se recusou a cruzar os limites do sistema de arquivos.

    
por 30.12.2013 / 11:46