내 디렉토리에 일부 파일이 있습니다/applications/나/all_off파일 이름은 다음과 같습니다.
- 액세스 로그
- 알람 배치
- 경고 서비스 루트
- db_wrapper_access_log
- db_wrapper_api_service
- 대기열 작업 없음
- mt_push_api_service
- mtqueue 작업
- nbp_request_handler
- 구성 file_api_service
- 프로모션 API 서비스
- 대기열 서비스 루트
그런 다음 확장자로 파일 형식을 지정합니다.. 통나무매일 생성되는 형식은 xxxx.log.20190101입니다.
그래서 이 모든 파일을 보관하고 이동하고 싶습니다.(마지막으로 생성된 파일은 전날이었습니다)입력하다/applications/me/all_off/backup/매일 정오 12시.그런데 특정 디렉터리의 파일을 백업하고 싶어요(이름을 기준으로) 예를 들면 다음과 같습니다.
/app/me/all_off/backup/access_log/access_log.log.2019010
내 상황에 대한 해결책이 있나요?
파일을 보관하고 이동하기 위해 Shellscript를 사용하고 있는데 파일이 안으로만 들어갑니다./applications/me/all_off/backup/. 아래는 내 쉘스크립트입니다:
(#!/bin/bash ----> "(" 참고사항
날짜1=
date -d "yesterday" +%Y%m%d
날짜2=
date -d "yesterday" +%Y-%m-%d
logPathMove=$logPath"백업/"
logPath='/app/me/all_off/'
모두 =
ls -ltrh *log* *log | awk -F ' ' '{print$9}' | awk -F '.' '{print$1}' | sort | uniq -c | awk -F ' ' '{print$2}'
CD ${logPath}
gzip -9 *.${date1}
gzip -9 *.${date1}.log -------->다른 형식의 파일 이름
gzip -9 *log.${date2}.log --------> 다른 형식의 파일 이름
CD {로그 경로}
i의 경우 *.gz 실행 mv ${i} ${logPathMove};
답변1
자신이 하고 싶은 일이 무엇인지 정확히 파악하기가 조금 어렵습니다. 그러나 쉘 스크립트를 디버깅하는 데 도움이 되는 일반적인 팁은 다음과 같습니다. 스크립트 시작 부분에 다음 줄을 넣으세요.
set -x
따라서 스크립트가 다음과 같은 경우:
b=1
echo a $b
실행하면 생성됩니다.
a 1
$
그리고 만약 당신이 그랬다면
set -x
b=1
echo a $b
그것은 생산한다
+ b=1
+ echo a 1
a 1
$
즉, 변수 대체 및 출력과 함께 어떤 명령이 실행되고 있는지 확인할 수 있습니다.