Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

A migração de sistemas operacionais, como do Windows para o Linux, é uma tarefa importante para muitas empresas e usuários individuais. No entanto, uma das questões que podem surgir durante esse processo é a diferença na convenção de nomenclatura de arquivos. Enquanto o Windows não faz distinção entre maiúsculas e minúsculas na nomenclatura de arquivos, o Linux é case-sensitive, o que significa que "Arquivo.txt", "ArquiVo.txt" e "arquivo.txt" são tratados como arquivos diferentes. Portanto, para garantir uma transição tranquila e evitar possíveis problemas de compatibilidade, é importante que todos os nomes de arquivos e diretórios estejam em letras minúsculas.

Neste artigo, abordamos a conversão dos nomes dos arquivos e diretórios para apoiar aos que se encontram em uma jornada de migração. 

Desafio: Nomes de arquivos em maiúsculas no Windows

Ao migrar para o Linux a partir do Windows, é comum encontrar diretórios e arquivos que usam letras maiúsculas na nomenclatura. Essa diferença de convenção pode causar confusão e erros em sistemas Linux, onde a distinção entre maiúsculas e minúsculas é rigorosamente aplicada.

Solução: Script para renomear arquivos e diretórios em letras minúsculas

Para enfrentar esse desafio, é possível usar um script simples em shell para renomear todos os diretórios e arquivos em letras minúsculas. Abaixo está um script de exemplo que pode ser usado para realizar essa tarefa:

Expandir
titleClique para visualizar o script
Bloco de código
#!/bin/bash

# Diretório principal a ser verificado
DIR="/totvs/protheus_data"

# Log para registrar as alterações
LOGFILE="/totvs/protheus_data/rename_to_lowercase.log"

# Contar o número total de diretórios
total_dirs=$(find "$DIR" -type d | wc -l)
processed_dirs=0

# Funcao para renomear um diretório para caixa baixa
rename_dir_to_lowercase() {
  local dir="$1"
  local newname="$(echo "$dir" | tr 'A-Z' 'a-z')"
  if [ "$dir" != "$newname" ]; then
    mv "$dir" "$newname" > /dev/null 2>> "$LOGFILE"
    echo "$newname"
  else
    echo "$dir"
  fi
}

# Função para renomear arquivos em caixa alta para caixa baixa e registrar no log
rename_files_to_lowercase() {
  local dir="$1"
  find "$dir" -type f | while read -r file; do
    local newname="$(echo "$file" | tr 'A-Z' 'a-z')"
    if [ "$file" != "$newname" ]; then
      mv "$file" "$newname" > /dev/null 2>> "$LOGFILE"
      echo "Arquivo alterado: $file -> $newname" >> "$LOGFILE"
    fi
  done
}

# Função para percorrer recursivamente os diretórios
traverse_directories() {
  local directory="$1"
  local newname=""
  for item in "$directory"/*; do
    if [ -d "$item" ]; then
      # Renomear o diretório atual
      newname=$(rename_dir_to_lowercase "$item")
      # Renomear arquivos dentro do diretório atual e registrar no log
      rename_files_to_lowercase "$newname"
      # Atualizar a barra de progresso
      processed_dirs=$((processed_dirs + 1))
      percentage=$((processed_dirs * 100 / total_dirs))
      echo -ne "Progresso: $percentage% \r"
      # Recursivamente chamar a função para subdiretórios
      traverse_directories "$newname"
    fi
  done
}

# Iniciar a função de travessia no diretório principal
traverse_directories "$DIR"

# Imprimir uma nova linha para limpar a linha de progresso
echo ""

 Como usar o script:

...

Bloco de código
chmod +x rename_to_lowercase.sh

Durante esta jornada, é comum que surjam muitas dúvidas relacionadas à configuração do ambiente, diferenças entre os sistemas operacionais e o que fazer ou não fazer.

Considerando este cenário, estamos elaborando uma série de artigos que irão auxiliar as pessoas envolvidas no processo de migração. Confira a seguir:

Exibir filhos

...

Bloco de código
./rename_to_lowercase.sh

Exemplo da execução do arquivo:

Image Removed

Esse procedimento foi executado em 70GB de protheus_data, neste exemplo.

...

titleEm resumo

...