我们有一个类似触发器的流浪者档案
DB_NAME="mydb" TIME=(Time.now.strftime("%Y%m%d%H%M%S")) SQL_BACKUPS=(Dir["./config/schema/*_#{DB_NAME}.sql"]) config.trigger.before [:destroy, :provision] do |trigger| trigger.info = "Dumping database to /vagrant/config/schema/#{TIME}_#{DB_NAME}.sql" trigger.run_remote = {inline: "mysqldump --add-drop-table -u #{DB_USERNAME} -p#{DB_PASSWORD} #{DB_NAME} > /vagrant/config/schema/#{TIME}_#{DB_NAME}.sql"} end
在里面 /vagrant/config/schema/ 我们有备份文件,比如: 20181116160919_mydb.sql
/vagrant/config/schema/
20181116160919_mydb.sql
如何在ruby中找到像 *_mydb.sql 和/或返回最新创建的名称?
*_mydb.sql
我们希望在销毁、供应和维护时自动化数据库备份;向上的
编辑:
SQL_BACKUPS=(Dir["./config/schema/*_#{DB_NAME}.sql"]).sort SQL_BACKUPS.reverse.each do |filename| puts "#{filename}" end
返回包含sql文件的列表
另外,我对Ruby没有经验。
我知道你有带时间戳的文件,但是,如果你没有时间戳或者没有区分创建时间的方法,下面的方法就是我用于非带时间戳文件的方法。
File::Stat 他有办法 ctime (返回创建时间),因此可以像这样执行。
File::Stat
ctime
SQL_BACKUPS=Dir["./config/schema/*_#{DB_NAME}.sql"].map { |f| {name: f, ctime: File::Stat.new(f).ctime } } sorted = SQL_BACKUPS.sort_by { |f| f[:ctime] } sorted.last.name # gives the one that was created the last.