rm : .filename not removed : 디스크 할당량이 초과되었습니다.


3

이것은 내가 할 때 얻는 전체 파일 이름입니다. ls -lt 내 현재 디렉토리에서.

EXPORT_v1x0_20120811_11_T_065800_070000.dat.gz

파일 이름도 날짜로 구성됩니다. 위 파일에서 날짜는 20120811.

그래서 시작하는 모든 파일을 삭제하려고합니다. EXPORT_v1x0 날짜가 20120825.

명령 줄에서 아래의 스크립트를 사용하여 파일을 삭제합니다.

find . -name "EXPORT_v1x0*" | awk -F'_' '$3<20120825' | xargs rm

그러나 위의 명령을 사용하여 파일을 삭제할 때마다 항상 예외가 발생합니다.

rm: ./EXPORT_v1x0_20120811_11_T_065800_070000.dat.gz not removed: Disc quota exceeded

아무도이 예외가 무엇을 의미하는지 말해 줄 수 있습니까? 그리고이 문제를 극복하는 방법?

나는 달리고있다. SunOS.

bash-3.00$ uname -a
SunOS lvsaishdc3in0001 5.10 Generic_142901-02 i86pc i386 i86pc

아마 도움이 될 것입니다. 잘라 내지하다 먼저 파일과 함께 echo -n > EXPORT_v1x0_20120811_11_T_065800_070000.dat.gz.
Anton Kovalenko

어떤 SunOS 버전을 사용하고 있습니까? 다음의 결과는 무엇입니까? quota -v?
Keith Thompson

질문을 버전 이름으로 업데이트했습니다. 나는 달리고있다. 5.10 버전 이름을 정확하게 해석하면. 그리고 나는 노력했다. quota -v 그러나 그것은 말한다 quota: command not found. 왜?

@AntonKovalenko, 내가 어떻게 파일을 잘라야하는지 말해 줄 수 있어요? 나 한테도 말한대로 해봤 어. echo -n > EXPORT_v1x0_20120811_11_T_065800_070000.dat.gz. 다시 나는 같은 것을 얻었다. Disc Quota Exception as well

1
모든 파일들. ZFS의 '기능'으로, 파일을 만들기 전에 약간의 공간이 필요합니다.
Petesh

답변:


4

너는 뭔가를 할 필요가있을거야. cat /dev/null > file (또는 echo > file ) 다시 rm을 사용할 수 있도록 할당량 아래로 돌아가십시오.


제안에 대해 Paul에게 감사드립니다. 이걸 추가해야한다면 /dev/null 내 명령에서 내 질문에 언급 한 다음 어떻게 수정해야합니까, 그래서 다시는이 예외가 나타나지 않을까요? 이견있는 사람?

너는 그것을 시도해야한다. 단일 파일 (바람직하게는 큰 파일)을 사용하여 할당량을 얻은 다음 findrm 다시 일하기 시작할 수 있습니다. 모르겠다. 어쩌면 파일 삭제가 먼저 디렉토리를위한 블록을 할당하기를 원할 것이다. (예, 이상).
Anton Kovalenko

안톤은 정확합니다. 하나의 파일을 자른 다음 전체 명령을 실행하여 모든 파일을 복구하는 것이 가장 좋습니다 (할당량에 도달하면 작업해야 함). 먼저 -size 플래그를 사용하여 찾기를 실행하고이를 사용하여 잘림 후보를 식별 할 수 있습니다.

3
내가 말한대로 파일 잘라내기를 시도했다. echo -n > EXPORT_v1x0_20120811_11_T_065800_070000.dat.gz. 다시 나는 같은 것을 얻었다. Disc Quota Exception as well.

2

할당량 아래로 이동할 때까지 찾은 가장 작은 파일을 수동으로 삭제하면 표준 방법으로 삭제할 수 있습니다.

@Volodymyr Savchenko의 대답이 왜 실패했는지 나는 모른다. 사실 그것은 나에게도 효과가있는 유일한 트릭이었습니다.

HPC에서 일하고 있는데 할당량이 부족합니다.

거의 모든 명령이 나이를 먹고 있었다.

- rsync --remove-source-files를 사용하여 원격으로 작동하지 않았습니다.

rsync -avz --remove-source-files -e "ssh -p ####" usr@host:path/file.dat ./
receiving file list ... done
rsync: sender failed to remove file.dat: Disk quota exceeded (122)

-rm 대부분의 파일이 작동하지 않았습니다.

[usr@server ~]$ rm  path/file.dat
rm: cannot remove 'path/file.dat': Disk quota exceeded

-하기

cat /dev/null path/file

분명히 작동하지만 rm'ing하지 않을 것입니다 (아직 할당량이 초과되면 오류 메시지가 표시됩니다) (나는 이해할 수 없습니다).

그럼에도 불구하고 '만졌을'뿐인 빈 파일 (예 : 크기가 매우 작은 빈 파일)을 삭제하면 할당량 아래로 이동하여 파일을 정상적으로 삭제할 수 있습니다.


0

파일을 삭제할 수있는 권한이 없거나 읽기 전용 일 수 있습니다. rm -f를 시도하십시오. 할당량 메시지는 디스크에 쓰려고하는 것에서옵니다.


unlink를 호출 할 때 디렉토리에 쓸 필요가 있다는 의미에서 실제로 디스크를 사용할 수 있습니다 - syscall rm이 사용합니다. 초과 할당량은 쓰기 액세스가 없음을 의미합니다.
jim mcnamara

-1

나는 똑같은 문제가 있었는데, 보통 제안 된 해결책들 중 당신이 열거 한 해결책들 중 어느 것도 일하지 않았습니다.

그러나 가장 작은 파일을 삭제할 수 있음을 깨달았습니다. 1kb. 난 그냥 rm으로 큰 것들을 정리할 수 있도록 충분한 작은 파일을 찾아야했다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.