Linux/리눅스 시스템 관리

01_02_05_파일 시스템 관리_파일 관리

easyfly 2022. 2. 20. 17:00
반응형

파일 관리

  1. ls
    • 지정한 경로에 존재하는 파일과 디렉터리의 리스트를 출력한다.
    • 파일의 크기, 소유자, 수정한 시간 등 다양한 정보도 함께 보여준다. 
    • 옵션 지정이 없으면 현재 디렉터리의 파일 및 디렉터리를 알파벳 순서로 보여준다.
    • 형식: # ls [optison] file ...
    • 옵션
      • -a, --all
      • -d, --directory: 디렉터리 자체에 대한 정보를 출력한다. 
        'ls -d' 사용법
      • -F, --classify: 각 파일명마다 파일의 유형을 뜻하는 문자를 붙여 준다.
        • @: 심볼릭 링크
        • *: 실행 파일
        • =: 소켓
        • |: 파이프
        • /: 디렉터리
          'ls -F' 또는 'ls --classify'
      • -t: 마지막 수정 시간을 최신 기준으로 정렬하여 출력한다.
      • -u: -lt 옵션과 함께 마지막 수정 시간 대신 접근 시간을 출력한다.
      • -i, --inode: 각 파일의 아이노드 번호를 출력한다.
      • -r, --reverse: 역순으로 정렬한다.
      • -R, --recursive: 목록 중 디렉터리가 있다면 디렉터리 안의 목록도 출력한다.
      • -S: 파일 크기 기준으로 정렬한다.
      • -1: 한 줄에 하나의 항목만 출력한다.
        한 줄에 하나의 항목만 출력
      •  예제: 다음 명령어 결과에 대해 설명하라.
        • # ls -l
        • # ls -alF
        • # ls -ld test
        • # ls -ldi test
  2. cp
    • 지정한 파일이나 디렉터리를 복사하는 명령어다. 일반 명령어와 달리 성공하면 아무 출력이 없으며, 출력 결과를 확인하고 싶으면 '-v' 옵션을 사용한다.
    • 이미 존재하는 파일이 있는 경우 기본적으로 덮어쓰기가 된다. 이를 원치 않으면 '-i' 옵션을 사용한다. '-i' 옵션은 'interactive'의 머리글자이다.
    • 형식: # cp [option] source ... destination
    • 옵션
      • -r, -R, --recursive: 디렉터리 내의 파일이나 디렉터리도 복사한다.
      • -i, --interactive: 존재하는 파일을 덮어쓰기 전에 사용자에게 확인을 받는다.
      • -f, --force: 이미 존재하는 파일에 덮어쓸 수 없는 경우 해당 파일을 삭제 후 다시 복사를 시도한다.
      • -b: 대상 파일이 이미 존재할 때 기존 파일명 뒤에 '~'를 붙여 백업한다. 'b'는 'backup'을 의미한다.
      • -s, --symbolic-link: 파일을 복사하는 대신에 심볼릭 링크를 생성한다. 단 모든 소프 파일은 절대 경로여야 하고 대상 경로는 현재 디렉터리가 아니어야 한다.
      • -p: 허가권, 사용자 소유권, 그룹 소유권, 마지막 파일 접근 시간과 수정 시간을 보존하여 복사한다. 이 옵션을 사용하지 않으면 현재 사용자의 정보가 사용된다.
      • -v, --verbose: 항목의 정보를 자세하게 출력한다.
      • -d: 심볼릭 링크가 참조하는 파일이 아닌 심볼릭 링크 자체를 복사한다.
      • -a, --archive: 복사할 때 원본 파일이 가진 모든 정보를 그대로 복사한다. '-dR --preserve=all'과 동일하다.
      • -l, --link: 파일을 복사하지 않고 하드 링크를 생성한다.
      • -u, --update: 원본 파일이 대상 파일보다 최신이거나 대상 파일이 존재하지 않을 때 복사한다.
    • 예제: 다음 결과를 설명하라
      • # cp resume.doc myresume.doc
      • # cp ~/resume.doc /tmp
      • # cp ~/Documents/*.doc ~Documents/*.xls ~/Documents/*.txt ~/SendTo
      • # cp -R ~/Documents ~/DocumentsBackup
      • # cp -s library-10.so library.so
      • # cp -a /home/apple/* /backup/
  3. rm
    • 지정한 파일을 삭제하는 명령이다. 옵션을 사용하지 않으면 디렉터리는 지우지 않는다. 디렉터리를 삭제하려면 '-r' 또는 '-R' 옵션을 사용해야 한다.
    • 파일 시스템상 파일 이름가 실제 데이터와의 링크를 제거할 뿐 데이터 자체를 지우지는 않는다.
    • 형식: rm [option] file...
    • 옵션
      • -i: 삭제하기 전에 확인
      • -f, --force: 파일이 존재하지 않아도 무시
      • -r, -R, --recursive: 디렉터리와 그 이하의 파일 및 디렉터리를 모두 삭제
    • 예제: 다음을 설명하라
      • rm -- -dashfile.txt 또는 rm ./-dashfile.txt
      • rm photo.jpg
      • rm -f photo.jpg
      • rm -i *
      • rm -rf ~/photos
    • shred 명령어: rm 명령어는 파일 시스템상 실제 데이터는 지우지 않는다. 실제 데이터를 지울려면 'shred' 명령어를 사용한다. 사용법은 'shred -u 파일명'이다. 
  4. mv
    • 지정한 파일이나 디렉터리를 지정한 경로로 이동하거나 이름을 변경할 수 있다.
    • 형식: mv [option] source ... destination
    • 옵션
      • -i, --interactive: 파일의 허가권과 관계 없이 존재하는 파일을 덮어쓰기 전에 사용자에게 확인을 받는다.
      • -f, --force: 사용자 확인 없이 해당 파일이 존재하더라도 덮어쓴다. 다수의 파일을 이동할 때 기존 파일이 읽기 전용인 경우 해당 옵션을 사용하면 사용자에게 매번 물어보지 않고 진행된다.
      • -b: 대상 파일이 이미 존재하는 경우 덮어쓰기 전에 백업 파일을 만든다. 백업 파일명은 원본 파일명 뒤에 '~'가 붙는다.
      • -u, --update: 대상 파일이 최신인 경우 덮어쓰지 않는다. 즉 대상 파일이 오래됐거나 존재하지 않으면 덮어쓴다.
      • -t, --target-directory: 모든 원본 파일을 지정한 경로로 이동한다.
    • 예제: 다음을 설명하라
      • $ mv music.mp3 musicbox
      • $ mv music.mp3 spring.mp3 fall.mp3 musicbox
      • $ mv -t musicbox music.mp3 spring.mp3 fall.mp3
      • $ mv musicbox/ musics/
  5. touch
    • 파일의 마지막 접근 시간, 수정 시간, 변경 시간과 같은 파일스탬프 정보를 수정하는 명령어이다. 파일이 없는 경우는 빈 파일을 생성한다.
    • 형식: tuch [option] filename
    • 옵션
      • -a: atime(access time)만 변경한다.
      • -m: mtime(modification time)만 변경한다.
      • -t: 현재 시간 대신에 지정한 타임스탬프를 설정할 수 있다. 타임스탬프 형식은 [[CC]YY]MMDDhhmm[.ss]이다. 타임스탬프 형식은 [MMDDhhmm[.ss]]이다.
      • -r, --reference: ㅎㄴ재 시간이 아닌 지정한 파일의 타임스템프로 변경한다. 이 옵션을 사용하려면 옵션으로 지정한 파일에 대한 쓰기 권한 및 소유자여야 한다.
      • -c, --no-create: 파일을 생성하지 않는다. 파일이 존재하는 경우에마 파일스탬프를 현재 시스템 시간으로 변경하고 존재하지 않으면 빈 파일을 생성하지 않는다.
      • 타임스탬프 종류
        • 접근 시간(access time: atime): 파일을 읽은 마지막 시간.
        • 수정 시간(modification time: mtme): 파일의 내용이 변경되었던 마지막 시간.
        • 변경 시간(change time: ctime): 파일의 허가권과 같은 상태가 변경되었던 시간. atime과 mtime도 파일의 상태가 포함되므로 이들이 변경되면 ctime도 변경됨
  6. file
    • 파일의 유형을 확인하는 명령어이다.
    • 형식: file [option] filename
    • 옵션
      • -b, --brief: 파일명은 출력하지 않고 파일 유형만 출력한다.
    • 예제
      • $ file t1
      • $ file -b t1: 파일 이름이 나오지 않는다.
  7. find
    • 파일이나 디렉터리 이름, 생성 날짜, 수정 날짜, 소유자, 허가권 등 사용자가 지정한 조건에 부합하는 파일 시스템에 존재하는 파일과 디렉터리를 찾는 명령어
    • 옵션
      • -name: 패턴과 파일 이름과 부합하는 파일을 찾는다. 파일 이름은 파일 경로는 제외한다.
      • -user: 지정한 사용자가 소유한 파일을 찾는다.
      • -group: 지정한 그룹에 속한 파일을 찾는다.
      • -uid: 파일의 UID가 지정한 UID와 같은 파일을 찾는다.
      • -gid: 파일의 GID가 지정한 GID와 같은 파일을 찾는다.
      • -perm: 지정한 허가권과 일치하는 파일을 찾는다.
      • -type: 지정한 파일 유형을 찾는다.(b, c, d, p, f, l, s)
      • -atime: 파일의 마지막 접근 시간이 지정한 일(day) 이전 파일을 찾는다.
      • -ctime: 파일의 마지막 변경 시간이 지정한 일(day) 이전 파일을 찾는다.
      • -mtime: 파일의 마지막 수정 시간이 지정한 일(day) 이전 파일을 찾는다.
      • -exec: 패턴에 부합하는 파일을 찾을 때마다 실행할 명령어를 지정할 수 있다.
      • -ok: -exec 옵션과 동일한 기능을 수행하지만 사용자에게 명령을 수행할지 먼저 물어본다.
      • -print: 표준 출력으로 개행 문자로 종료하는 전체 파일 경로를 출력한다. find 명령어의 결과를 파이프로 다른 프로그램에게 보낼 때 해당 프로그램이 경로의 끝을 개행 문자로 인식하는 경우 유용하다. 만약 널(null) 문자로 끝나기를 원한다면 -print0을 사용한다.
      • -fprint: 지정한 파일에 찾은 파일의 전체 파일의 전체 파일 경로를 출력한다. 지정한 파일이 없다면 생성하고, 존재한다면 합친다.
      • -ls: ls -dils 형식으로 찾은 파일에 대한 정보를 출력한다.
      • -size: 지정한 크기의 파일을 찾는다. '+'와 '-'를 사용하여 파일 크기의 범위를 지정할 수 있다. 예를 들어 -size +512c -size -1024c라고 하면 512바이트보다 크고 1024보다 작은 범위를 뜻한다. 여기서 'c'는 바이트를 뜻한다.(b, c, w, k, M, G)
      • -inum: 지정한 아이노드 번호의 파일을 찾는다.
      • -iname: -name과 동일하지만 대소문자를 구분하지 않는다.
      • -maxdepth: 지정한 깊이의 디렉터리까지만 찾는다. 0으로 지정하면 하위 디렉터리까지 찾지 않고 지정한 디렉터리 내의 파일만 찾는다.
      • -prune: 찾은 파일이 디렉터리인 경우 그 하위 내용까지 검색하지 않는다.
      • -empty: 파일 크기가 0이거나 비어있는 디렉터리를 찾는다.
      • -newer: 지정한 파일보다 최근에 수정된 파일을 찾는다.
      • -cnewer: 지정한 파일보다 최근에 변경된 파일을 찾는다.
    • 예제: 다음 명령어 사용을 설명하라.
      • find[find .]
      • find . /home/easyfly
      • find . -name '*.txt'
      • find . -name 'apple' type f
      • find . -group daemon
      • find . -user toshiba
      • find . -atime -5
      • find . -perm u=rwx,g=rx,o=r
      • find . -perm 754
      • find . -size -5G
      • find . -size +1G -exec mv '{} ~/bigfiles \;
      • find . -name '*.log' -print0 | xargs -0 rm -f
      • find . -name '[abc]*'
      • find . -ctime +1 -ctime -2
반응형