cronjob을 사용하여 마운트하면 중복 마운트가 생성되나요?

cronjob을 사용하여 마운트하면 중복 마운트가 생성되나요?

이 명령을 사용하여 설치했습니다

mount -t cifs -o username=xxx password = xxx //server_address //data_directory

불행하게도 이 마운트는 IT 서버 유지 관리로 인해 손상되는 경우가 많아 다시 마운트해야 합니다. 나는 위의 명령을 사용하여 매일 cronjob에서 마운트를 다시 실행하기로 결정했습니다.

마운트는 여전히 작동하지만 를 실행하면 findmnt내 디렉토리에 10개의 마운트가 있고 모두 서로 중첩되어 있는 것처럼 보입니다. 이런 일이 발생한 사람이 있습니까?

마운트를 "덮어쓰거나" 마운트가 현재 존재하지 않는 경우 마운트 명령을 실행하려면 어떻게 해야 합니까?

매우 감사합니다

답변1

umount /path/to/data_directory 그럼 mount다시

또는

-o remount설치 명령에 추가하기만 하면 됩니다.

답변2

자동 설치 프로그램을 사용하세요. 설치를 사용하지 않을 때는 자동으로 제거되고, 다시 사용하고 싶을 때 다시 설치되도록(투명하게) 설정하세요.

이것을 원격 서버에 있는 것과 결합 deadtime하면 좋습니다.


자동 설치 프로그램 이 있지만 systemd사용하지 않았습니다. 다음은 내 자신의 시스템 중 일부에서 실행하는 것입니다.

  1. 존재하다/etc/auto.master

    /var/autofs/misc    /etc/auto.misc    --timeout 600
    

    그런 다음 mkdir /var/autofs/misc일회성 작업으로

  2. 존재하다/etc/auto.misc

    rShare -fstype=cifs,credentials=/usr/local/etc/cifs.secret,noperm,vers=3.0,iocharset=utf8      ://remoteServer/remoteShare
    

    그런 다음 루트가 소유한 파일에 자격 증명을 넣고 /usr/local/etc/cifs.secret루트만 읽을 수 있는지 확인하세요.

    chown root.root /usr/local/etc/cifs.secret
    chmod 600 /usr/local/etc/cifs.secret
    
  3. 마지막으로 디렉토리를 /var/autofs/misc/rShare액세스하려는 파일 시스템의 실제 위치에 심볼릭 링크합니다. 예를 들어 일반적으로 사용하는 경우 /path/to/data다음을 사용합니다.

    cd /path/to                                # Parent of old mountpoint
    rmdir data                                 # Delete old directory
    ln -s /var/autofs/misc/rShare data    # Symlink from autofs
    

이제부터 마운트나 마운트 내에서 파일이나 디렉터리를 참조하면 /path/to/data필요에 따라 활성화됩니다. 유휴 시간 10분(600초)이 지나면 자동으로 제거됩니다. 모든 것이 투명합니다.

답변3

다시 설치하기 전에 설치 여부를 확인하시기 바랍니다. 인수 없이 실행하면 mountgrep으로 파이프할 수 있는 현재 마운트 지점 목록이 제공됩니다.

예를 들어 grep:

if ! mount | grep -q //data_directory ; then
  mount -t cifs -o username=xxx password = xxx //server_address //data_directory
fi

이 내용은 한 줄로 단축할 수 있습니다.

mount | grep -q //data_directory || mount -t cifs -o username=xxx password = xxx //server_address //data_directory

,를 사용하여 출력의 필드 3에서 정확한 일치를 수행할 수도 있습니다. awk(검색 문자열이 행의 어느 곳에나 나타나는지 테스트합니다. 이는 기본적으로 충분하지만 완벽하지는 않습니다.)mountgrep

if ! mount | awk -v ec=1 '$3 == "//data_directory" {ec=0; last}; END {exit ec}' ; then
...
fi

(이를 위해서는 GNU awk, mawk 또는 이 명령문을 이해하는 다른 last버전의 awk가 필요합니다.)


rsync그런데 유사한 백업 스크립트에 파일 시스템이 이미 마운트되어 있는지 확인하는 것은 대상 디렉터리가 별도로 마운트된 파티션이거나 네트워크 마운트로 가정되는 경우 특히 유용합니다. 대상이 마운트되지 않은 경우 백업 스크립트가 오류 메시지를 인쇄하고 중단하도록 하려고 합니다. 그렇지 않으면 백업이 잘못된 파일 시스템에서 공간을 차지하게 됩니다(그리고 마운트 지점 뒤에 숨겨져 있으므로 나중에 알아차리지 못할 수도 있습니다). 올바르게 설치된 경우 대상 디렉토리).

(어떻게 알 수 있나요? 백업 스크립트를 작성할 때 실수를 했고 rsync 등을 실행하기 전에 확인하지 않았기 때문에... 루트 파일 시스템이 자체 복사본으로 채워졌습니다.)

관련 정보