이름에 wW4가 포함된 파일만 가져오도록 rsync에 지시하는 방법

이름에 wW4가 포함된 파일만 가져오도록 rsync에 지시하는 방법

나는 이 일에 있어서는 단지 아마추어일 뿐이라고 말하고 싶습니다. 아래 웹페이지에서 과제 파일을 받으세요. 좋은 결과.

rsync -av --progress -e 'ssh -i ~/.ssh/godaddy5_rsa' $user@$server:${RemotePath}/ "${Answers}"

모든 파일 이름은 다음과 같습니다.

1112223334_18BEwW4data

첫 번째 학생 번호(1112223334), 다음 _class(_18BE), 다음 주 번호(wW4 = 겨울 학기 4주차) 및 데이터

경로는 다음과 같습니다.

RemotePath="public_html/18BE/php/uploads"
Answers="/home/pedro/winter2019-20/18BE/fastmarker"

물론 wWX는 기간이 지남에 따라 변경됩니다. 주 번호를 가져와 rsync 스크립트에 삽입하기 위해 작은 bash 스크립트를 만들었습니다.

echo "First, enter the week number you want to get."
read week
echo "You are fetching winter week $week"
echo "If this is correct, enter y, if not enter n to abort."
read answer
if [ $answer = "n" ]; then
echo "You entered the wrong week number, aborting script, byebye. Start again!"
 exit
fi
echo "You entered the correct week number, I'll carry on!"

이제 이름에 $week가 포함된 파일만 가져오고 싶습니다. 다음 주는 wW4가 됩니다.

나는 rsync 매뉴얼 페이지를 읽고 --include와 --exclude의 다양한 조합을 시도했습니다.

내가 얻는 것은 아무것도 없거나 모든 파일입니다. 즉, 파일 이름에 wW1, wW2 및 wW3도 포함된 파일입니다.

이름에 $week가 포함된 파일만 가져오도록 rsync에 어떻게 지시해야 합니까(다음 주는 wW4입니까)?

편집: 제안해 주셔서 감사합니다. 나는 이것을 시도했습니다 :

rsync -av --progress -e 'ssh -i ~/.ssh/godaddy5_rsa' $user@$server:${RemotePath}/*_18BEwW4data "${Answers}"

안타깝게도 저는 아무것도 얻지 못했습니다. 학생번호는 모두 다르기 때문에 와일드카드가 필요합니다.

*.wW4로 끝나도록 일부 파일의 이름을 바꾼 후 다음을 시도했습니다.

rsync -av --progress -e 'ssh -i ~/.ssh/godaddy5_rsa' $user@$server:${RemotePath}*.wW4 "${Answers}"

Bash에서 다음 오류가 발생합니다.

셋째, 원격 서버의 파일을 이 컴퓨터로 가져옵니다. 증분 파일 목록 rsync 수신: link_stat "/home/myusername/public_html/18BE/php/uploads*.wW4" 실패: 해당 파일 또는 디렉터리 없음 (2)

8바이트 보내기 123바이트 받기 15.41바이트/초 총 크기는 0 속도 향상은 0.00 rsync 오류: main.c(1668)에서 일부 파일/속성(이전 오류 참조)(코드 23)이 전송되지 않았습니다. [수신자 =3.1.2]Pedro @pedro-school2:~$

죄송합니다! 내 잘못! $RemotePath에서 실수를 했는데 이제 작동합니다!

감사하고 귀찮게 해서 미안해요!

답변1

rsync -av --progress -e 'ssh -i ~/.ssh/godaddy5_rsa' $user@$server:${RemotePath}/1112223334_18BEwW4* "${Answers}"

너무 깊게 생각하지 마세요. 포함/제외가 필요하지 않으며 와일드카드만 있으면 됩니다.

모든 작업이 포함된 디렉토리가 있고 rsync가 다음과 같은 최신 작업을 가져오기 때문에 실제로 한 주 동안 운동할 필요조차 없습니다.

rsync -av --progress -e 'ssh -i ~/.ssh/godaddy5_rsa' $user@$server:${RemotePath}/1112223334_18BEwW* "${Answers}"

date +%U는 해당 연도의 주를 반환하므로 이를 사용하여 과정의 주를 자동으로 생성할 수 있습니다. 이는 선형이고 매주 1씩 증가한다고 가정합니다. 또는 인덱스가 코스 주 번호를 가리키고 인덱스가 연도 주 번호인 배열을 만들 수 있습니다. 또는 선형 관계인 경우 연도-주 숫자를 더하거나 뺄 수 있습니다.

관련 정보