mirror of https://github.com/trapexit/mergerfs.git
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							37 lines
						
					
					
						
							887 B
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							37 lines
						
					
					
						
							887 B
						
					
					
				
								#!/usr/bin/env sh
							 | 
						|
								
							 | 
						|
								if [ $# != 3 ]; then
							 | 
						|
								    echo "usage: $0 <cache-fs> <base-pool> <percentage>"
							 | 
						|
								    exit 1
							 | 
						|
								fi
							 | 
						|
								
							 | 
						|
								CACHEFS="${1}"
							 | 
						|
								BASEPOOL="${2}"
							 | 
						|
								PERCENTAGE="${3}"
							 | 
						|
								
							 | 
						|
								set -o errexit
							 | 
						|
								while [ $(df "${CACHEFS}" | tail -n1 | awk '{print $5}' | cut -d'%' -f1) -gt ${PERCENTAGE} ]
							 | 
						|
								do
							 | 
						|
								    # Find the file with the oldest access time
							 | 
						|
								    FILE=$(find "${CACHEFS}" -type f -printf '%A@ %P\n' | \
							 | 
						|
								               sort | \
							 | 
						|
								               head -n 1 | \
							 | 
						|
								               cut -d' ' -f2-)
							 | 
						|
								    # If no file found, exit
							 | 
						|
								    test -n "${FILE}" || exit 0
							 | 
						|
								    # Move file
							 | 
						|
								    rsync \
							 | 
						|
								        --archive \
							 | 
						|
								        --acls \
							 | 
						|
								        --xattrs \
							 | 
						|
								        --atimes \
							 | 
						|
								        --hard-links \
							 | 
						|
								        --one-file-system \
							 | 
						|
								        --quiet \
							 | 
						|
								        --preallocate \
							 | 
						|
								        --remove-source-files \
							 | 
						|
								        --relative \
							 | 
						|
								        --log-file=/tmp/mergerfs-cache-rsync.log \
							 | 
						|
								        "${CACHEFS}/./${FILE}" \
							 | 
						|
								        "${BASEPOOL}/"
							 | 
						|
								done
							 |