古いリモートメディアのパージ
リモートメディアの総サイズ
matrix1=> select count(*) , sum(media_length) from remote_media_cache;
count | sum
7184 | 4846156363
(1 row)
ローカルメディアの総サイズ
select count(*) , sum(media_length) from local_media_repository;
count | sum
17082 | 7767821172
(1 row)
ユーザ別メディアデータ使用量
select user_id, count(*) as c, sum(media_length) as bytes
from local_media_repository
group by user_id order by bytes desc limit 20;
user_id | c | bytes
(CENSORED)
ユーザのメディアデータを削除
login();
for my $userId (@_){
say "#################";
say "$userId";
my $userIdEncoded = uri_escape( $userId );
for(;;){
my $response = eval{
jsonRequest(
DELETE => "/_synapse/admin/v1/users/$userIdEncoded/media"
);
};
if($@){
warn $@,"\n";
last;
}
say dump $response;
my $deleteCount = $response->{total};
last if not $deleteCount;
}
}
古いローカルメディアを削除
login();
my $before_ts = (time - 86400*40)*1000;
for(;;){
my $response = eval{
jsonRequest(
POST=>"/_synapse/admin/v1/media/delete?before_ts=$before_ts"
);
};
if( $@ ){
if( $@ =~ /"error":"([^"]+)"/ ){
say "medieLocalOldDelete: $1";
return;
}else{
die $@;
}
}
say dump($response);
my $deleteCount = $response->{total};
last if not $deleteCount;
}
いろいろやってるとpostgreSQLのログがあふれるので sudo logrotate -f /etc/logrotate.conf などする