타닥타닥 개발자의 일상

검색된 파일의 전체를 한번에 다 압축 하는 리눅스 명령문 쓰기 / find와 exec 이용 / + 이용해서 한번에 압축 본문

코딩 기록/linux

검색된 파일의 전체를 한번에 다 압축 하는 리눅스 명령문 쓰기 / find와 exec 이용 / + 이용해서 한번에 압축

NomadHaven 2023. 5. 19. 10:36

 

리눅스 공부를 하면서 혼자 아래의 문제를 풀고 있었다.

  • 사용자 user2의 파일을 찾아서 /tmp/user2-banned/에 저장한다.
    • 저장된 파일은 xz으로 압축하여 user2-banned이름으로 /root/에 저장한다.
    • 반드시 확장자는 올바르게 표기가 되어야 한다.

우선 user2의 파일을 찾아야 하니

find / -user user2 -type f -print

를 입력했고 아래와 같은 파일들이 검색됐다.

/home/user2/.bash_logout
/home/user2/.bash_profile
/home/user2/.bashrc
find: ‘/proc/7227/task/7227/fdinfo/6’: No such file or directory
find: ‘/proc/7227/fdinfo/5’: No such file or directory
/root/.bash_logout
/root/.bash_profile
/root/.bashrc
/var/spool/mail/user2

검색된 파일들을 모두 압축하고 새로운 이름에 저장하려고  아래의 코드를 입력했다.

 

 find / -user user2 -type f -exec tar cf /tmp/user2-banned/user2-banned.xz {} \;​

 /tmp/user2-banned/ 경로에 user2-banned.xz라는 파일이 생기긴 했는데,

 

압축 파일의 내부 파일을 볼수있는

tar -tf user2-banned.xz

를 실행해서 해당파일을 보니 검색된 파일중

/var/spool/mail/user2 만 저장되어 있었다.

 

 

 

모든 파일을 압축하고 싶은데 어떻게 해야되냐 GPT한테 물어보니 아래와 같은 명령어를 실행하라 했다. {} 뒤애 + 가 새롭게 붙었다.

find / -user user2 -type f -exec tar rf /tmp/user2-banned/user2-banned.xz {} +

변경된 부분은 -exec 뒤에 tar 명령어를 실행하는 부분입니다. rf 옵션을 사용하여 압축 파일에 파일을 추가하고, {}find 명령어가 찾은 파일을 나타냅니다. +는 여러 개의 파일을 한 번에 처리하도록 지정합니다.

 

+를 붙여야지 여러 파일을 한번에 압축할 수 있나보다.

 

위와 같이 명령문을 작성하고 다시 압축된 파일을 확인해보니

모든 파일들이 생성된 압축 파일 내에 잘 복사된게 보인다.

 

 

 


응용 연습문제 풀기

 

  • 사용자 user1이 가지고 있는 모든 파일을 생성한다.
  • 1메가보다 작은 크기인 파일만 복사한다.
  • 복사된 파일은 bzip2로 복사하여 /root/에 user1-files라는 이름으로 저장한다.
  • 반드시 확장자는 올바르게 표기가 되어 있어야 한다.

 

 

작성된 명령문

 find / -user user1 -size -1M -type f -exec tar rf /root/user1-fiels.bzip2 {} +

 

Comments