시놀로지 스크립트 한번 봐주세요 mv 관련
안녕하세요 지나가는 문과생입니다
# look 폴더 내용을 DL 폴더로 이동 시킨다
mv -f "/volume1/Bb/Show_Look/" "/volume2/Show_DL/"
mv -f "/volume1/Bb/Movie_Look/" "/volume2/Movie_DL/"
mv 명령어 사용하면 look 폴더 자체가 사라져버립니다.
도와주세요
좋은답변을 받기위해서는 좋은 질문이 필요합니다.
유의할점⚠️
- 예의를 지켜주세요. 답변자는 답변을 할 의무는 없습니다.
- 질문에 대한 대부분의 답은 검색으로 찾아보실 수 있습니다.
- 답변자가 답변을 하면서 대개 많은 경우는 다시 질문을 하는 경우가 많이 있습니다.
- (질문의 대한 정보가 부족합니다. ~일 경우 결과물이 어떻게 됩니까? 등등)
질문방법🙏
자신의 상황을 최대한 자세히 설명해주세요.
상황이 정확하고 많을 수록 답변의 정확도가 올라갑니다.
ex) ex) 헤놀로지라면 메인보드 모델 칩셋정보, CPU, 사용한 DSM 버전, 모델, 부수적인 추가 컨트롤러 나 랜카드 등과 어떠한 로더의 이미지를 사용했는지.(arpl-i18n, mshell), 어떤 버전을 사용했는지, 문제가있다면 어떠한것인지 스크린샷을 동반하고 에러의 경우 에러로그를 출력해서 주시면 좋습니다.
*가능하면 최신버전 OS/SW를 이용해주세요
답변에대한 피드백을 주세요.
정보가 질문에 모두 담겨있지않다면 대부분의 답변이 다른정보를 요구합니다.
이러한 답변에 대해 명확한 피드백을 주시면 도움이 됩니다.
find "/volume2/Show_DL" -type f -mtime +60 -exec rm -rf {} \;\
find "/volume2/Movie_DL" -type f -mtime +60 -exec rm -rf {} \;\
# look 폴더 내용을 DL 폴더로 이동 시킨다
mv -f "/volume1/Bb/Show_Look/" "/volume2/Show_DL/"
mv -f "/volume1/Bb/Movie_Look/" "/volume2/Movie_DL/"
# 해당 폴더의 빈 폴더를 삭제한다
find "/volume2/Movie_DL" -empty -exec rm -rf {} \;
find "/volume2/Show_DL" -empty -exec rm -rf {} \;
이렇게 1개 파일로 만들어서 사용하면 문제 있을까요???
그러나 목적지에 이미 같은 이름의 폴더가 있을 경우, 해당 폴더를 덮어쓰게 됩니다. 따라서 원본 폴더가 사라지는 것처럼 보입니다.
원본 폴더를 목적지 폴더 안으로 이동시키고 싶으시다면, 다음과 같이 수행할 수 있습니다:
```bash
mv -f "/volume1/Bb/Show_Look/*" "/volume2/Show_DL/"
mv -f "/volume1/Bb/Movie_Look/*" "/volume2/Movie_DL/"
```
위 명령어에서 `*`은 해당 디렉토리 내의 모든 파일과 폴더를 대상으로 이동시킵니다. 이렇게 하면 원본 폴더가 사라지는 것이 아니라 내용물만 목적지 폴더로 이동됩니다.
mv: cannot stat '/volume1/Bb/Show_Look/*': No such file or directory
mv: cannot stat '/volume1/Bb/Movie_Look/*': No such file or directory
이런 로그가 왜 나올까요 ..
폴더명 이랑 그대로 복사 해서 차이가 없는데.
아래 파이선으로 코드 짜주셔서 그걸로 이용했습니다
import os
import shutil
import time
def delete_old_files(directory, days):
current_time = time.time()
for root, dirs, files in os.walk(directory):
for file in files:
file_path = os.path.join(root, file)
if os.path.isfile(file_path):
file_age = current_time - os.path.getmtime(file_path)
if file_age > days * 86400: # 60일 초과된 파일 삭제 (하루는 86400초)
os.remove(file_path)
def move_files(source_dir, destination_dir):
for root, dirs, files in os.walk(source_dir):
for file in files:
source_file_path = os.path.join(root, file)
destination_file_path = os.path.join(destination_dir, file)
shutil.move(source_file_path, destination_file_path)
def delete_empty_folders(directory):
for root, dirs, files in os.walk(directory, topdown=False):
for dir in dirs:
dir_path = os.path.join(root, dir)
if not os.listdir(dir_path):
os.rmdir(dir_path)
if __name__ == "__main__":
show_dl_dir = "/volume2/Show_DL"
movie_dl_dir = "/volume2/Movie_DL"
# 60일 이상 된 파일 삭제
delete_old_files(show_dl_dir, 60)
delete_old_files(movie_dl_dir, 60)
# "Look" 폴더 내의 모든 파일을 "Show_DL" 폴더로 이동
move_files("/volume1/Bb/Show_Look/", show_dl_dir)
move_files("/volume1/Bb/Movie_Look/", movie_dl_dir)
# 빈 폴더 삭제
delete_empty_folders(show_dl_dir)
delete_empty_folders(movie_dl_dir)
파이썬으로 해보세요
원하는이름.py 파일로 저장 하시고 homes 폴더 같은 곳에 넣어두신 후
python /volume1/homes/원하는이름.py
시놀로지 작업 스케쥴에 시간과 함께 이렇게 등록 하시면 정상 작동 할 겁니다
시놀로지에 python 패키지 전부 설치 하시고요
혹시모르니 폴더 안에 테스트용 파일로 테스트 해보세요
cmt alert