I\'m using RecursiveIteratorIterator and RecursiveDirectoryIterator to help make backups of files. The current script is similar to this one:
RecursiveIteratorIterator
RecursiveDirectoryIterator