현재 사용자가 만든 마지막 파일이 어디에 있는지 어떻게 알 수 있나요?

현재 사용자가 만든 마지막 파일이 어디에 있는지 어떻게 알 수 있나요?

저는 Ubuntu 16.04(xenial)와 Bash 4.3.48(1) 및 zip3.0을 사용하고 있습니다.

다양한 기능이 포함된 bash 스크립트()가 포함된 파일에는 #!/bin/bash생성을 위한 이 기능도 있습니다.하나의 zip 파일로 전체 데이터베이스 백업 + 문서 루트 백업:

imb() {
    drt="/var/www/html"
    date="$(date +%F-%T)"
    mysqldump -u root -p --all-databases | zip "$drt/db-$date.zip" - # Note the hyphen before this comment;
    zip -r "all_zipped-$date.zip" "$drt"/ -x "*/cache/*"
    rm -f "$drt/db-$date.zip"
}

source ~/function.sh위 파일( ) 을 얻어 디버그 모드( ) imb에서 실행했습니다 .set -x

데이터베이스 비밀번호를 묻는 메시지가 나타난 후 어느 정도 시간이 지났습니다(데이터베이스 백업이 생성되었음을 나타냄). 또한 문서 루트 아래의 모든 항목이 압축되었음을 나타내는 장황한 zip(터미널에 붙여넣거나 추적하기에는 너무 길음)이 나타났습니다.

하지만 백업이 나타나지 않습니다 /var/www/html/.

내 질문

그 의견 때문에 나는 비슷하지만 실제로는 다른 두 가지 질문을 해야 한다고 느꼈습니다.

  1. zip은 내 파일을 어디에 저장합니까(예: 수동 생성이라는 의미에서 "파일 생성"이 아니라고 가정 touch)? 물론, 프로세스에 의해 생성되고 어딘가에 있는 파일이 반드시 내 사용자의 소유는 아닙니다.

  2. 마지막 파일이 생성된 위치를 어떻게 찾을 수 있나요?내 현재 사용자가,누워?

다음 위치에 있을 것으로 예상됩니다 /var/www/html/.

zip -r "all_zipped-$date.zip" "$drt"/ -x "*/cache/*"

그러나 그것은 진실이 아니다. /루트( )에서 시작하여 시스템의 전체 파일 트리를 통해 실행 하지 않고 그것이 생성된 위치를 알 수 있는 효율적인 방법을 모르겠습니다. 해당 시스템에서는 아마도 몇 시간이 걸릴 것이기 때문입니다.

고쳐 쓰다

이 질문을 쓰면서 홈디렉토리( $HOME/)를 방문해서 파일을 찾았는데 왜 문서 루트에는 생성되지 않고 거기에 생성되었는지 모르겠습니다.

답변1

zip -r "all_zipped-$date.zip" "$drt"/ -x "*/cache/*"

해당 디렉토리(이 경우 홈 디렉토리)에 관계없이 현재 디렉토리에 아카이브를 생성합니다.

아카이브를 생성하려면 다음을 ${drt}알려주어야 합니다 zip.

zip -r "${drt}/all_zipped-$date.zip" "$drt"/ -x "*/cache/*"

특정 사용자가 생성한 마지막 파일이 어디에 있는지 알아내는 쉬운 방법은 없습니다. 타임스탬프를 사용 find하고 타임스탬프를 내림차순으로 정렬해야 합니다. 마지막 수정 시간을 대략적인 생성 시간으로 사용하세요.

find . -user user9303970 -printf "%T@ %p\n" | sort -n -k1,1 -r | head -n 1

관련 정보