Usando as File Storage Parallel Tools

A suíte Parallel File Tools fornece versões paralelas de tar, rm e cp. Essas ferramentas podem executar solicitações em sistemas de arquivos grandes em paralelo, maximizando o desempenho das operações de proteção de dados.

O kit de ferramentas inclui:

  • partar: Use este comando para criar e extrair tarballs em paralelo.
    Observação

    A ferramenta partar oferece suporte à extração de arquivos tar criados no formato básico GNU tar POSIX 1003.1-1990. Arquivos criados em outros formatos de arquivo compactado, como PAX, não são suportados.
  • parrm: Você pode usar este comando para remover recursivamente um diretório em paralelo.
  • parcp: Use este comando para copiar recursivamente um diretório em paralelo.

Instalando as Parallel File Tools

O conjunto de ferramentas é distribuído como RPM para o Oracle Linux, Red Hat Enterprise Linux e CentOS.

Para instalar as Parallel File Tools no Linux

Para instalar as Parallel File Tools em uma instância do Oracle Linux:

  1. Abra uma janela de terminal na instância de destino.
  2. Digite o seguinte comando:
    sudo yum install -y fss-parallel-tools
Para instalar as Parallel File Tools no Oracle Linux 8

Para instalar as Parallel File Tools em uma instância do Oracle Linux 8:

  1. Abra uma janela de terminal na instância de destino.
  2. Instale o repositório do desenvolvedor do Oracle Linux, se necessário, usando o seguinte comando:
    dnf install oraclelinux-developer-release-el8
  3. Instale as Parallel File Tools no repositório do desenvolvedor usando o seguinte comando:
    dnf --enablerepo=ol8_developer install fss-parallel-tools
Para instalar as Parallel File Tools no CentOS e Red Hat 6.x

Para instalar as Parallel File Tools no CentOS e Red Hat 6.x:

  1. Abra uma janela de terminal na instância de destino.
  2. Digite o seguinte comando:
    sudo wget http://yum.oracle.com/public-yum-ol6.repo -O /etc/yum.repos.d/public-yum-ol6.repo
    sudo wget http://yum.oracle.com/RPM-GPG-KEY-oracle-ol6 -O /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
    sudo yum --enablerepo=ol6_developer install fss-parallel-tools
Para instalar as Parallel File Tools no CentOS e Red Hat 7.x
  1. Abra uma janela de terminal na instância de destino.
  2. Digite o seguinte comando:
    sudo wget http://yum.oracle.com/public-yum-ol7.repo -O /etc/yum.repos.d/public-yum-ol7.repo
    sudo wget http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 -O /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
    sudo yum --enablerepo=ol7_developer install fss-parallel-tools

Usando as Ferramentas - Exemplos Básicos

Aqui estão alguns exemplos simples de como as diversas ferramentas são comumente usadas no Oracle Cloud Infrastructure File Storage.

Para copiar todos os arquivos e pastas de um diretório para outro

Neste exemplo, parcp é usado para copiar o diretório "folder" em /source para /destination. A opção -P é usada para definir o número de threads paralelos que você deseja usar.

$parcp -P 16 /source/folder /destination

No exemplo a seguir, parcp é usado para copiar o conteúdo do diretório "folder" em /source para /destination. O diretório "folder" em si não é copiado.

$parcp -P 16 /source/folder/. /destination
Para criar um arquivo compactado .TAR de um diretório
O comando a seguir cria um arquivo compactado .tar do conteúdo do diretório especificado e o armazena como um tarball no diretório. No exemplo abaixo, o nome do diretório que está sendo usado para criar o tarball é example.
$partar pcf example.tar example -P 16
Você também pode criar um tarball e enviá-lo para outro diretório. No exemplo abaixo, o diretório que está sendo usado para criar o tarball é o example. O tarball está sendo criado no diretório /test.
$partar pcf example.tar example -P 16 -C /test

Usando as Ferramentas - Exemplos Avançados

Veja alguns exemplos de como as diferentes ferramentas são usadas em cenários mais avançados.

Para copiar arquivos ou pastas selecionados em um arquivo compactado .TAR e excluir outros

Você pode especificar quais arquivos e pastas serão incluídos quando criar um arquivo compactado .tar usando partar. Digamos que você tenha um diretório semelhante a este:

[opc@example sourcedir]$ ls -l
total 180
-rw-r-----.  1 opc opc          0 Apr 15 02:55 example2020-04-15_02-55-33_217107549.error
-rw-r-----.  1 opc opc         10 Apr 15 03:18 example2020-04-15_02-55-33_217107549.log
-rw-rw-r--.  1 opc opc         12 Apr 15 03:18 example2020-04-15_03-18-13_267771997.error
-rw-rw-r--.  1 opc opc         10 Apr 15 03:18 example2020-04-15_03-18-13_267771997.log
-rwxr-xr-x.  1 opc opc         37 Nov 30  2017 File1.txt
-rwxr-xr-x.  1 opc opc         15 Dec  1  2017 File2.txt
-rwxr-xr-x.  1 opc opc         39 Nov 30  2017 File3.txt
-rwxr-xr-x.  1 opc opc         57 Dec  1  2017 File4.txt

O comando a seguir cria um arquivo compactado .tar que:

  • Contém um diretório mydir nomeado conforme especificado.
  • Inclui File1.txt, File2.txt, File3.txt e File4.txt.
  • Exclui todos os arquivos .log e .error.
  • Envia a bola .tar de /sourcedir para /mnt/destinationdir
  • Extrai o arquivo compactado .tar
[opc@example sourcedir]$ sudo partar cf - mydir --exclude '*.log*' --exclude '*.err*' | sudo partar xf - -C /mnt/destinationdir

A execução de ls -l em /mnt/destinationdir/mytar mostra que somente os arquivos desejados foram copiados.

[opc@example mytar]$ ls -l
total 148
-rwxr-xr-x.  1 opc opc         37 Nov 30  2017 File1.txt
-rwxr-xr-x.  1 opc opc         15 Dec  1  2017 File2.txt
-rwxr-xr-x.  1 opc opc         39 Nov 30  2017 File3.txt
-rwxr-xr-x.  1 opc opc         57 Dec  1  2017 File4.txt

Ao excluir um diretório ou arquivo do arquivo compactado, forneça apenas o nome do diretório ou arquivo. A opção --exclude não suporta o uso de um caminho absoluto. O uso de um caminho absoluto na opção --exclude não excluirá o diretório ou arquivos especificados do arquivo compactado .tar. Por exemplo, se você precisar excluir um diretório chamado testing do caminho do diretório de origem, especifique isso em um comando como o seguinte:

sudo partar pczf name_of_tar_file.tar.gz /<path_source_directory> --exclude=testing
Observação

Todos os arquivos ou diretórios que correspondam ao padrão --exclude no caminho do diretório de origem serão excluídos do arquivo compactado partar.
Para copiar arquivos ou pastas selecionados de um diretório para outro

Você pode especificar quais arquivos e pastas serão incluídos quando usar parcp para copiar de um diretório para outro. Digamos que você tenha um diretório semelhante a este:

[opc@example sourcedir]$ ls -l
total 180
-rw-r-----.  1 opc opc          0 Apr 15 02:55 example2020-04-15_02-55-33_217107549.error
-rw-r-----.  1 opc opc         10 Apr 15 03:18 example2020-04-15_02-55-33_217107549.log
-rw-rw-r--.  1 opc opc         12 Apr 15 03:18 example2020-04-15_03-18-13_267771997.error
-rw-rw-r--.  1 opc opc         10 Apr 15 03:18 example2020-04-15_03-18-13_267771997.log
-rwxr-xr-x.  1 opc opc         37 Nov 30  2017 File1.txt
-rwxr-xr-x.  1 opc opc         15 Dec  1  2017 File2.txt
-rwxr-xr-x.  1 opc opc         39 Nov 30  2017 File3.txt
-rwxr-xr-x.  1 opc opc         57 Dec  1  2017 File4.txt

Primeiro, crie um arquivo .txt contendo uma lista de arquivos que deseja excluir. Neste exemplo, é /home/opc/list.txt.

O seguinte comando copia o conteúdo de sourcedir para /mnt/destinationdir e:

  • Copia File1.txt, File2.txt e File3.txt.
  • Exclui os arquivos File4.txt, .log e .error, conforme listado em /home/opc/list.txt.
[opc@example ~]$ cat /home/opc/list.txt
File4.txt
*.log*
*.err*
[opc@example ~]$ date; time sudo parcp --exclude-from=/home/opc/list.txt -P 16 --restore /sourcedir /mnt/destinationdir;
date Mon Jun  1 15:58:30 GMT 2020

real 9m55.820s
user 0m3.602s
sys 1m5.441s

Mon Jun  1 16:08:25 GMT 2020
A execução de ls -l em /mnt/destinationdir mostra que somente os arquivos desejados foram copiados.
[opc@example destinationdir]$ ls -l
total 91
-rwxr-xr-x.  1 opc opc         37 Nov 30  2017 File1.txt
-rwxr-xr-x.  1 opc opc         15 Dec  1  2017 File2.txt
-rwxr-xr-x.  1 opc opc         39 Nov 30  2017 File3.txt
Para usar PARCP como uma alternativa eficaz para RSYNC em paralelo

A opção --restore em parcp é semelhante ao uso das opções -a -r -x e -H em rsync. (Consulte rsync(1)- Linux Man Page.) A opção -P é usada para definir o número de threads paralelos que você deseja usar.

A opção restore inclui o seguinte comportamento:

  • Recursar em diretórios
  • Parar nos limites do sistema de arquivos
  • Preservar links físicos, symlinks, permissões, tempos de modificação, grupos, proprietários e arquivos especiais, como arquivos named sockets e fifo
$parcp -P 16 --restore /source/folder/ /destination

Você pode usar parcp com as opções --restore e --delete para sincronizar arquivos entre uma pasta de origem e uma de destino. Este é um bom substituto para usar rsync em paralelo. Como os arquivos são adicionados ou removidos do diretório de origem, você pode executar este comando em intervalos regulares para adicionar ou remover os mesmos arquivos do diretório de destino. Você pode automatizar a sincronização usando essa opção de comando em um cron job.

sudo parcp -P 32 --restore --delete /source/folder/ /destination