Class List
- App\Middleware\Cors
- App\Middleware\Auth
- App\Middleware\Env
- AppMin
- Application
- Route
- Data\Database
- Data\Db2Database
- Data\OdbcDatabase
- Data\Validator
- Data\KeyValue\SqliteStorage
- Data\Log\FileLogger
- Data\Log\HtmlLogger
- Encoding\Base64Url
- Encoding\Json
- Encoding\Utf8
- Environment\DotEnv
- Environment\System
- FileSystem\Search
- FileSystem\Security
- FileSystem\Sync
- Lang\I18N
- Lang\L10N
- Lang\Time
- Media\Image
- Net\Config
- Net\Email
- Net\HttpClient
- Net\HttpResponse
- Net\IP
- Net\SmtpClient
- Security\Crypto
- Security\Password
- Security\Crypto\Encryption
- Security\Crypto\FileEncryption
- Security\Crypto\JWT
- Security\Crypto\PublicKey
- Security\Crypto\Random
- Security\Crypto\SignedData
- Security\Web\CsrfSession
- Security\Web\CsrfStateless
- Security\Web\RateLimit
- Web\Request
- Web\Response
FastSitePHP\FileSystem\Sync
File System Sync
This class provides the ability for syncing of all files and directories from one directory to another directory. This class compares files using a hash (defaults to 'sha256') and updates the files if different. Additionally new files, deleted files, new empty directories, and deleted directories are handled.
Source Code
Example Code
File System Sync
// Create a FileSystem Sync Object
$sync = new FastSitePHP\FileSystem\Sync();
// Sync files and directories (folders) from [dirFrom(path)] to [dirTo(path)].
// The sync is recursive so all files and directories are synced in all
// sub-directories. Required functions are [dirFrom, dirTo, and sync].
// To view the results call [printResults()] after calling [sync()].
// All options with defaults are shown below.
$sync
->dirFrom($dir_from)
->dirTo($dir_to)
->excludeNames(['package-lock.json'])
->excludeRegExPaths(['/node_modules/'])
->summaryTitle('File System Sync Results')
->hashAlgo('sha256')
->dryRun(false) // Set to [true] for testing
->sync()
->printResults();
Methods
dirFrom($new_value = null)
Get or set the directory to sync from (source directory).
Returns: string | $this
dirTo($new_value = null)
Get or set the directory to sync to (destination directory).
Returns: string | $this
excludeNames(array $new_value = null)
Get or set an array of files/dir names to exclude. If a file/dir matches any names in the list then it will be excluded from the result. This property does not handle files in nested directories. For nested files use [excludeRegExPaths()].
Returns: array | $this
excludeRegExPaths(array $new_value = null)
Get or set an array of files/dir regex path expressions to exclude. If part of the full path matches any regex in the list then it will be excluded from the result.
Example usage:
$sync->excludeRegExPaths(['/node_modules/']);
Returns: array | $this
summaryTitle($new_value = null)
Get or set the summary title used for report output when calling [printResults()]. Defaults to 'File System Sync Results'.
Returns: string | $this
dryRun($new_value = null)
Get or set a dry run boolean value for testing. When set to [true] no changes will be made when calling [sync()]. Defaults to [false].
Returns: bool | $this
hashAlgo($new_value = null)
Get or set the hashing algorithm for comparing files when syncing. Defaults to 'sha256'.
Returns: string | $this
sync()
Sync files and directories (folders) from [dirFrom(path)] to [dirTo(path)]. The sync is recursive so all files and directories are synced in all sub-directories.
To view the results of the sync call [printResults()] after calling this function.
Returns: $this
printResults()
Output the result of [sync()] as a text summary. This includes a list of all affected files and directories and summary counts. This function will typically be used for CLI output, however if used on a web server then <br> will be used for line breaks.