Como mover de um sistema de arquivos para outro sem alterar a estrutura do diretório?

1

/dev/xvda1 está cheio, por isso quero mover seu conteúdo para o meu sistema de arquivos de 30GB udev .

Filesystem      Size  Used Avail Use% Mounted on
udev             30G  4.0K   30G   1% /dev
tmpfs           5.9G  768K  5.9G   1% /run
/dev/xvda1      7.8G  7.4G     0 100% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
none            5.0M     0  5.0M   0% /run/lock
none             30G     0   30G   0% /run/shm
none            100M     0  100M   0% /run/user

Como posso fazer isso?

Stack: máquina do EC2 Ubuntu.

    
por rafaelcosman 18.05.2016 / 20:18

2 respostas

1

Na maioria dos casos, você não moveria os arquivos de um sistema de arquivos para outro. Se você estiver ampliando o disco em uma máquina virtual ou tirando mais espaço do mesmo disco, amplia a partição que contém o sistema de arquivos e amplia o sistema de arquivos para preencher a partição (quais comandos dependem do tipo de partição e do tipo de sistema de arquivos ). Se você estiver mudando para um novo disco, geralmente é mais rápido e mais fácil copiar a partição como um todo e, em seguida, ampliá-la conforme descrito acima.

No seu caso, uma vez que esta é uma máquina virtual, você precisará primeiro dar a ela um disco maior. Conforme observado por Mark Plotnick em um comentário , consulte o Guia da AWS ; existe uma interface web para anexar um novo volume, e há também uma interface web para realizar a cópia (criando e restaurando um instantâneo).

Note que /dev não é um sistema de arquivos de armazenamento, é um sistema de arquivos na RAM. Seus 30 GB gratuitos são a quantidade máxima de dados que podem ser armazenados lá, mas isso tira um pedaço da sua RAM e é perdido quando você reinicia. Mais uma vez, não mova nenhum arquivo para /dev , eles serão excluídos quando você reinicializar .

    
por 19.05.2016 / 01:53
-1

Não use cp para copiar grandes quantidades de dados.
Use o rsync também, pois ele pode ser reiniciado se for interrompido. Use o seguinte:

rsync -az -H /path/to/source  /path/to/destination

-a : Archive mode (i.e. recurse into directories, and preserve symlinks, file permissions, file modification times, file group, file owner, device files & special files) <br>
-z : Compress file data during the transfer <br>
-H : Preserve hard links (i.e. copy hard links as hard links)

Editado como apontado pelos comentadores, eu não vi este é o seu / dir.
Se estiver usando bash ou zsh como shell, adicione:

--exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"}

Agora se torna

rsync -az -H --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /path/to/source  /path/to/destination 

Caso contrário, se estiver usando shell diferente, você deve fazer uma instrução --exclude para cada diretório diferente.

    
por 18.05.2016 / 21:03