Provided by: rex_1.6.0-1_all
NAME
Rex::Commands::Fs - Filesystem commands
DESCRIPTION
With this module you can do file system tasks like creating a directory, deleting files, moving files, and more.
SYNOPSIS
my @files = list_files "/etc"; unlink("/tmp/file"); rmdir("/tmp"); mkdir("/tmp"); my %stat = stat("/etc/passwd"); my $link = readlink("/path/to/a/link"); symlink("/source", "/dest"); rename("oldname", "newname"); chdir("/tmp"); is_file("/etc/passwd"); is_dir("/etc"); is_writeable("/tmp"); is_writable("/tmp"); chmod 755, "/tmp"; chown "user", "/tmp"; chgrp "group", "/tmp";
EXPORTED FUNCTIONS
list_files("/path"); This function list all entries (files, directories, ...) in a given directory and returns a array. task "ls-etc", "server01", sub { my @tmp_files = grep { /\.tmp$/ } list_files("/etc"); }; This command will not be reported. ls($path) Just an alias for list_files symlink($from, $to) This function will create a symlink from $from to $to. task "symlink", "server01", sub { symlink("/var/www/versions/1.0.0", "/var/www/html"); }; ln($from, $to) ln is an alias for symlink unlink($file) This function will remove the given file. task "unlink", "server01", sub { unlink("/tmp/testfile"); }; rm($file) This is an alias for unlink. rmdir($dir) This function will remove the given directory. task "rmdir", "server01", sub { rmdir("/tmp"); }; Since: 0.45 Please use the file() resource instead. task "prepare", sub { file "/tmp", ensure => "absent"; }; mkdir($newdir) This function will create a new directory. Since: 0.45 Please use the file() resource instead. task "prepare", sub { file "/tmp", ensure => "directory", owner => "root", group => "root", mode => 1777; }; task "mkdir", "server01", sub { mkdir "/tmp"; mkdir "/tmp", owner => "root", group => "root", mode => 1777; }; chown($owner, $file) Change the owner of a file or a directory. chown "www-data", "/var/www/html"; chown "www-data", "/var/www/html", recursive => 1; This command will not be reported. If you want to use reports, please use the file() resource instead. chgrp($group, $file) Change the group of a file or a directory. chgrp "nogroup", "/var/www/html"; chgrp "nogroup", "/var/www/html", recursive => 1; This command will not be reported. If you want to use reports, please use the file() resource instead. chmod($mode, $file) Change the permissions of a file or a directory. chmod 755, "/var/www/html"; chmod 755, "/var/www/html", recursive => 1; This command will not be reported. If you want to use reports, please use the file() resource instead. stat($file) This function will return a hash with the following information about a file or directory. mode size uid gid atime mtime task "stat", "server01", sub { my %file_stat = stat("/etc/passwd"); }; This command will not be reported. is_file($file) This function tests if $file is a file. Returns 1 if true. 0 if false. task "isfile", "server01", sub { if( is_file("/etc/passwd") ) { say "it is a file."; } else { say "hm, this is not a file."; } }; This command will not be reported. is_dir($dir) This function tests if $dir is a directory. Returns 1 if true. 0 if false. task "isdir", "server01", sub { if( is_dir("/etc") ) { say "it is a directory."; } else { say "hm, this is not a directory."; } }; This command will not be reported. is_symlink($file) This function tests if $file is a symlink. Returns 1 if true. 0 if false. task "issym", "server01", sub { if( is_symlink("/etc/foo.txt") ) { say "it is a symlink."; } else { say "hm, this is not a symlink."; } }; This command will not be reported. is_readable($file) This function tests if $file is readable. It returns 1 if true. 0 if false. task "readable", "server01", sub { if( is_readable("/etc/passwd") ) { say "passwd is readable"; } else { say "not readable."; } }; This command will not be reported. is_writable($file) This function tests if $file is writable. It returns 1 if true. 0 if false. task "writable", "server01", sub { if( is_writable("/etc/passwd") ) { say "passwd is writable"; } else { say "not writable."; } }; This command will not be reported. is_writeable($file) This is only an alias for is_writable. This command will not be reported. readlink($link) This function returns the link endpoint if $link is a symlink. If $link is not a symlink it will die. task "islink", "server01", sub { my $link; eval { $link = readlink("/tmp/testlink"); }; say "this is a link" if($link); }; This command will not be reported. rename($old, $new) This function will rename $old to $new. Will return 1 on success and 0 on failure. task "rename", "server01", sub { rename("/tmp/old", "/tmp/new"); }; mv($old, $new) mv is an alias for rename. chdir($newdir) This function will change the current workdirectory to $newdir. This function currently only works local. task "chdir", "server01", sub { chdir("/tmp"); }; This command will not be reported. cd($newdir) This is an alias of chdir. df([$device]) This function returns a hashRef reflecting the output of df task "df", "server01", sub { my $df = df(); my $df_on_sda1 = df("/dev/sda1"); }; This command will not be reported. du($path) Returns the disk usage of $path. task "du", "server01", sub { say "size of /var/www: " . du("/var/www"); }; This command will not be reported. cp($source, $destination) cp will copy $source to $destination (it is recursive) task "cp", "server01", sub { cp("/var/www", "/var/www.old"); }; mount($device, $mount_point, @options) Mount devices. task "mount", "server01", sub { mount "/dev/sda5", "/tmp"; mount "/dev/sda6", "/mnt/sda6", ensure => "present", type => "ext3", options => [qw/noatime async/], on_change => sub { say "device mounted"; }; # # mount persistent with entry in /etc/fstab mount "/dev/sda6", "/mnt/sda6", ensure => "persistent", type => "ext3", options => [qw/noatime async/], on_change => sub { say "device mounted"; }; # to umount a device mount "/dev/sda6", "/mnt/sda6", ensure => "absent"; }; In order to be more aligned with `mount` terminology, the previously used `fs` option has been deprecated in favor of the `type` option. The `fs` option is still supported and works as previously, but Rex prints a warning if it is being used. There's also a warning if both `fs` and `type` options are specified, and in this case `type` will be used. umount($mount_point) Unmount device. task "umount", "server01", sub { umount "/tmp"; }; glob($glob) task "glob", "server1", sub { my @files_with_p = grep { is_file($_) } glob("/etc/p*"); }; This command will not be reported.