File system traces have been used in simulation of specific design techniques such as disk scheduling, in workload characterization and modeling, and in identifying interesting file access patterns for performance optimizations. Suprisingly they are rarely used to test the correctness and to evaluate the performance of an actuaal file system or server. The main reason is that up until now there did not exist a flexible and easy-to-use trace player that, given an input trace, can properly initialize the test file system and replay the trace to the test system in such a way that respects dependency constraints among file access requests in the trace. This paper describes the design, implementation, and evaluation of an NFS trace play-back tool called FEUT (File system Evaluation Using Traces), which can automatically derive the initial file system image from a trace, speed up or slow down a trace play-back using temporal or spatial scaling, and features a highly efficient implementation that minimizes the CPU and disk I/O overhead during trace play-back. Experiments using a large NFS trace set show that trace-driven file system evaluation can indeed produce substantially different throughput and latency measurements than synthetic benchmarks such as SPECsfs, and FEUT's trace player is actually more efficient than SPECsfs's workload generator despite the fact that the former requires more CPU computation and disk I/O accesses.