import os, stat, time import re AGE_MAX = 8 * 7 * 86400.0 # 8 weeks RSYNC_COMMAND = ("rsync --bwlimit=450 --perms --chmod=Da+rx,Fa+r" " --relative --files-from=old-builds ." " buildslave@tannit.openend.se:public_html/nightly/") r = re.compile(r"pypy-c-.+\d\d\d\d.+[.]tar[.]bz2$") now = os.lstat('.').st_mtime def walk(f, dir): for p1 in os.listdir(dir): if dir == '.': path = p1 else: path = os.path.join(dir, p1) try: st = os.lstat(path) except OSError: continue if stat.S_ISDIR(st.st_mode): walk(f, path) elif stat.S_ISREG(st.st_mode): if r.match(p1): age = now - st.st_mtime if age > AGE_MAX: print >> f, path if __name__ == '__main__': f = open('old-builds', 'w') walk(f, '.') empty = f.tell() == 0 f.close() if not empty: err = os.system(RSYNC_COMMAND) if err: raise OSError("Error: %s" % (err,)) for filename in open('old-builds'): os.unlink(filename) os.unlink('old-builds')