Obter lista de arquivos Linux recursivamente e direcionar a saída para o arquivo

1

Estou configurando o software no Ubuntu para i2b2 e tentando encontrar todos os arquivos relevantes em uma imagem do CentOS que baixei (caminho abaixo) e agora estou executando no Windows VMWare Player (gratuito para download). Eu gostaria de criar um arquivo da hierarquia de arquivos Linux recursivamente, tanto para o CentOS quanto para o Ubuntu, para que eu possa encontrar os arquivos relevantes para cada programa (por exemplo: JBoss, Java, Apache, Axis, Spring Web Framework, Oracle, etc. ) e compare a configuração. Eu sei como fazer uma coisa semelhante no Windows, obtendo a saída de todos os arquivos.

Para encurtar a história, eu só quero um despejo de todos os arquivos no sistema de arquivos do Linux, começando pela pasta raiz, e salve-os em um arquivo.

Aqui está o comando no Windows para fazer isso:

WINDOWS-COMMAND-PROMPT>dir /b /a /s >> files_on_windows.txt

Referência:

link > Software (menu) > Imagem VMWare

    
por MacGyver 12.05.2012 / 18:27

1 resposta

2

Um equivalente aproximado ao seu comando do Windows usaria o comando find :

find / -xdev >files_on_linux.txt

Eu não acho que seria muito útil para o que você está fazendo. No Linux (tanto o CentOS quanto o Ubuntu), os programas vêm em pacotes; Se você quiser ter os mesmos programas no Ubuntu e no CentOS, então você deve obter uma lista de pacotes na máquina do CentOS e instalar os mesmos pacotes no Ubuntu. No CentOS, você pode listar os pacotes instalados com o seguinte comando (a etapa sed remove os números de versão, que são irrelevantes aqui):

rpm -qa | sed 's/-[0-9]*//' | sort >centos_packages.txt

A má notícia é que o CentOS e o Ubuntu usam nomes de pacotes diferentes, então você não pode pegar essa lista e fazer a instalação no Ubuntu. Você pode cortar parte do trabalho ignorando qualquer pacote chamado lib algo , já que estes serão puxados automaticamente pelos programas que precisam deles. Alguns dos nomes dos pacotes corresponderão um a um; você pode instalá-los da seguinte forma:

apt-get install $(grep -v '^lib' centos_packages.txt)

Você pode usar o seguinte comando para ver quais pacotes não estão instalados ou possuem um nome diferente - ele mostra as linhas que estão presentes em centos_packages.txt , mas não na saída de dpkg --get-selections , que lista o instalado (ou selecionado -para instalação) no Ubuntu:

dpkg --get-selections | sort | comm -31 - centos_packages.txt

Além disso, pode haver programas instalados em /usr/local ou /opt que não sejam do sistema de empacotamento. Você deve conseguir copiar os arquivos diretamente. Você pode fazer assim:

cd /
sudo tar cjf usr_local.tar.bz2 opt usr/local

Copie o arquivo usr_local.tgz para o novo sistema Linux e descompacte-o:

cd /
sudo tar xjf usr_local.tar.bz2
    
por 12.05.2012 / 19:01