비지박스 NAS 장치

비지박스 NAS 장치

내 NAS 장치가 지난 주말에 충돌했습니다. IT 담당자가 올바른 방법으로 복원하지 않은 것이 분명합니까? "lost+found" 디렉터리에는 약 50,000개의 디렉터리가 있으며, 각 디렉터리에는 "#4289756"과 같은 숫자 이름이 있습니다. 누락된 모든 파일이 이 디렉터리에 있는 것 같습니다. 각 파일에는 원래 날짜와 소유자 정보(Linux)가 포함되어 있습니다. 직원들이 찾을 수 있도록 정리해야 합니다.

내 목표는 이러한 파일을 구조로 복사/이동하여 각 직원이 자신의 파일이 포함된 폴더를 갖고 각 폴더를 월별로 더 나누는 것입니다.

장치 자체는 일반적인 Bash 명령의 하위 집합만 지원하는 Linux의 간단한 버전인 Busybox를 실행합니다. "find" 명령이 포함된 스크립트를 사용하여 소유자와 날짜별로 정렬한 다음 "-exec cp"를 사용하여 적절한 위치로 파이프할 수 있다고 생각했지만 Busybox에는 해당 기능이 없는 것 같습니다.

이것은 누군가가 제안한 것이지만 원래 디렉토리에 올바른 UID가 있다고 가정하지만 그렇지 않습니다.

cd /lost+found ; for i in *; do USER=`ls -l $i | awk '{print $3}'`; mkdir -p /home/$USER/recovered ; cp -a $i /home/$USER/recovered/$i ; done

답변1

각 장치에는 서로 다른 기능 세트를 갖춘 자체 BusyBox 컴파일이 있으므로 귀하의 장치가 무엇을 지원하는지 확실히 알 수 없습니다. 내가 올바르게 이해했다면 비슷한 디렉토리가 있고 /lost+found/#123456해당 디렉토리의 모든 파일은 동일한 사용자에게 속합니다. 이는 이러한 디렉터리를 사용자의 홈 디렉터리로 전달하는 테스트되지 않은 스크립트입니다. 나는 귀하의 사용자 이름에 공백이 없으며 사용자의 홈 디렉토리가 규칙을 따른다고 가정합니다 /home/$username.

cd /lost+found
[ -d /root/recovered ] || mkdir /root/recovered
for d in *; do
  username=$(ls -l "$d" | sed -e 's/^[^ ]  *[0-9][0-9]*  */' -e 's/ .*//' -e q)
  if [ -d "/home/$username" ]; then
    dest=/home/$username/recovered
  else
    homedir=/root/recovered/$username
  fi
  [ -d "$dest" ] || mkdir "$dest"
  cp -Rp "$x" "$dest"
done

awk 명령이 파일 소유자를 여러 번 인쇄한다는 점을 제외하면 이는 귀하가 게시한 내용과 거의 같습니다. awk '1 {print $3}'위와 같이 사용하거나 sed 할 수 있습니다 . 잘못된 소유권을 선택한 경우 ls -ld실제로 실행한 명령에 작성한 내용이거나 상황에 대한 설명("모든 누락된 파일이 이 디렉터리에 있었고 각 파일에는 원래 날짜와 소유자 정보가 있었습니다")이 있습니다. 잘못된. 또한 스크립트를 더욱 강력하게 만들었습니다. 특히 시스템 사용자가 소유한 파일이 /root/recovered.

그래도 문제가 해결되지 않으면 문제를 명확하게 설명하십시오. 오류 메시지나 ls출력을 복사하여 붙여넣습니다.

관련 정보